# Every change: format, clippy and rustdoc with zero warnings, every test. # Tools come from mise.toml, the same as on a laptop. name: check on: push: pull_request: # A newer push to the same branch makes an older check pointless: it is # cancelled, so only the newest reports. concurrency: group: check-${{ github.ref }} cancel-in-progress: true jobs: check: runs-on: ubuntu-24.04 # The runner's disk is small (the first run after P6 landed died in # the linker: "No space left on device", ld killed by SIGBUS). A fresh # runner gains nothing from incremental caches, and line tables keep # file:line in a panic's backtrace at a fraction of full debug info. env: CARGO_INCREMENTAL: "0" CARGO_PROFILE_DEV_DEBUG: line-tables-only CARGO_PROFILE_TEST_DEBUG: line-tables-only steps: - uses: actions/checkout@v4 - name: Room for the build (the image ships toolchains we never use) run: | sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc \ /opt/hostedtoolcache/CodeQL /usr/local/.ghcup df -h / | tail -1 - uses: jdx/mise-action@v2 - name: GUI build dependencies run: sudo apt-get update && sudo apt-get install -y libxkbcommon-dev libgtk-3-dev - run: just check - name: What the build used if: always() run: df -h / | tail -1 # The destination is one installation for macOS, Windows and Linux (D-56, # P11a step 0): the workspace must build and pass its tests on each, not # only here. `just check` (fmt, clippy, rustdoc, proofs' friends) stays # the Linux job's; these run the build and the tests. The job tells # which OS a failure is on; neither is allowed to hide the other. portable: name: portable (${{ matrix.os }}) strategy: fail-fast: false matrix: include: - os: macos-latest experimental: false - os: windows-latest experimental: false runs-on: ${{ matrix.os }} continue-on-error: ${{ matrix.experimental }} # Same disk discipline as above: no incremental caches, line tables only. env: CARGO_INCREMENTAL: "0" CARGO_PROFILE_DEV_DEBUG: line-tables-only CARGO_PROFILE_TEST_DEBUG: line-tables-only steps: - uses: actions/checkout@v4 - name: Rust (the version mise.toml pins) shell: bash run: rustup toolchain install 1.99 --profile minimal && rustup default 1.99 - name: Room for the build shell: bash run: df -h . | tail -1 - name: The server-only build (no viewer) run: cargo build -p ledger-cli --no-default-features - name: Everything compiles run: cargo build --workspace --all-targets - name: Tests run: cargo test --workspace - name: What the build used if: always() shell: bash run: df -h . | tail -1