name: CI
on:
push:
pull_request:
workflow_dispatch:
permissions:
contents: read
env:
RUSTFLAGS: -Dwarnings
CITYJSON_ARROW_SHARED_CORPUS_ROOT: ${{ github.workspace }}/cityjson-corpus
jobs:
fmt:
name: Format
runs-on: ubuntu-latest
timeout-minutes: 10
defaults:
run:
working-directory: cityjson-arrow
steps:
- uses: actions/checkout@v6
with:
path: cityjson-arrow
- uses: actions/checkout@v6
with:
repository: 3DGI/cityjson-rs
path: cityjson-rs
- uses: actions/checkout@v6
with:
repository: 3DGI/cityjson-json
path: cityjson-json
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- run: cargo install just --locked --force
- run: cargo fmt --all --check
lint:
name: Lint
runs-on: ubuntu-latest
timeout-minutes: 15
defaults:
run:
working-directory: cityjson-arrow
steps:
- uses: actions/checkout@v6
with:
path: cityjson-arrow
- uses: actions/checkout@v6
with:
repository: 3DGI/cityjson-rs
path: cityjson-rs
- uses: actions/checkout@v6
with:
repository: 3DGI/cityjson-json
path: cityjson-json
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- run: cargo install just --locked --force
- run: just lint
test:
name: Test (${{matrix.os}})
runs-on: ${{matrix.os}}-latest
strategy:
fail-fast: false
matrix:
os: [ubuntu, macos, windows]
timeout-minutes: 45
defaults:
run:
working-directory: cityjson-arrow
steps:
- uses: actions/checkout@v6
with:
path: cityjson-arrow
- uses: actions/checkout@v6
with:
repository: 3DGI/cityjson-rs
path: cityjson-rs
- uses: actions/checkout@v6
with:
repository: 3DGI/cityjson-json
path: cityjson-json
- uses: actions/checkout@v6
with:
repository: 3DGI/cityjson-fake
path: cityjson-fake
- uses: actions/checkout@v6
with:
repository: 3DGI/cityjson-corpus
path: cityjson-corpus
sparse-checkout: |
artifacts
catalog
cases
schemas
scripts
sparse-checkout-cone-mode: true
- run: python scripts/render_correctness_index.py
working-directory: cityjson-corpus
- uses: dtolnay/rust-toolchain@stable
- run: cargo install just --locked --force
- run: just test
build:
name: Build (MSRV ${{matrix.rust}})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
rust: [ 1.93.0 ]
timeout-minutes: 45
defaults:
run:
working-directory: cityjson-arrow
steps:
- uses: actions/checkout@v6
with:
path: cityjson-arrow
- uses: actions/checkout@v6
with:
repository: 3DGI/cityjson-rs
path: cityjson-rs
- uses: actions/checkout@v6
with:
repository: 3DGI/cityjson-json
path: cityjson-json
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{matrix.rust}}
- run: cargo install just --locked --force
- run: just build
nightly:
name: Build (nightly)
runs-on: ubuntu-latest
timeout-minutes: 45
defaults:
run:
working-directory: cityjson-arrow
steps:
- uses: actions/checkout@v6
with:
path: cityjson-arrow
- uses: actions/checkout@v6
with:
repository: 3DGI/cityjson-rs
path: cityjson-rs
- uses: actions/checkout@v6
with:
repository: 3DGI/cityjson-json
path: cityjson-json
- uses: dtolnay/rust-toolchain@nightly
- run: cargo install just --locked --force
- run: just build
doc:
name: Documentation
runs-on: ubuntu-latest
timeout-minutes: 45
env:
RUSTDOCFLAGS: --cfg docsrs -Dwarnings
defaults:
run:
working-directory: cityjson-arrow
steps:
- uses: actions/checkout@v6
with:
path: cityjson-arrow
- uses: actions/checkout@v6
with:
repository: 3DGI/cityjson-rs
path: cityjson-rs
- uses: actions/checkout@v6
with:
repository: 3DGI/cityjson-json
path: cityjson-json
- uses: dtolnay/rust-toolchain@nightly
- uses: extractions/setup-just@v4
- run: just rustdoc