release: 1.0.0 #4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| permissions: | |
| contents: read | |
| on: | |
| push: | |
| branches: [main, next] | |
| paths-ignore: | |
| - "**.md" | |
| - "**.txt" | |
| - "manifest/**" | |
| - "docs/**" | |
| pull_request: | |
| types: [opened, reopened, synchronize, labeled, unlabeled] | |
| paths-ignore: | |
| - "**.md" | |
| - "**.txt" | |
| - "docs/**" | |
| env: | |
| # Set the new value when the cache grows too much and we hit the runner's disk space limit | |
| # via https://github.com/rust-lang/docs.rs/pull/2433 | |
| RUST_CACHE_KEY: rust-cache-20260312 | |
| jobs: | |
| lint: | |
| name: lint | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: ./.github/actions/cleanup-runner | |
| - name: Install Rust | |
| run: | | |
| rustup update --no-self-update stable nightly | |
| rustc --version | |
| - name: Cache Cargo | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| # Use a common cache for the basic compilation/formatter/clippy checks | |
| shared-key: ${{ github.workflow }}-shared | |
| prefix-key: ${{ env.RUST_CACHE_KEY }} | |
| save-if: ${{ github.ref == 'refs/heads/main' }} | |
| - name: Clippy | |
| run: | | |
| make clippy | |
| rustfmt: | |
| name: rustfmt | |
| runs-on: ubuntu-latest | |
| # Run this job after the linter, so the cache is hot | |
| needs: [lint] | |
| # But run this check even if the lint check failed | |
| if: ${{ always() }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: ./.github/actions/cleanup-runner | |
| - name: Install Rust | |
| run: | | |
| rustup update --no-self-update nightly | |
| rustc --version | |
| - name: Cache Cargo | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| # Use a common cache for the basic compilation/formatter/clippy checks | |
| shared-key: ${{ github.workflow }}-shared | |
| prefix-key: ${{ env.RUST_CACHE_KEY }} | |
| # But do not save this cache, just use it | |
| save-if: false | |
| - name: Formatting | |
| run: | | |
| rustup +nightly component add rustfmt | |
| make format-check | |
| unit_tests: | |
| name: unit tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: ./.github/actions/cleanup-runner | |
| - name: Install rust | |
| run: | | |
| rustup update --no-self-update | |
| rustc --version | |
| - name: Cache Cargo | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| # NOTE: We use a different cache for the tests, so they can be run in parallel, but we | |
| # also share the cache for the tests for efficiency | |
| shared-key: ${{ github.workflow }}-shared-tests | |
| prefix-key: ${{ env.RUST_CACHE_KEY }} | |
| save-if: ${{ github.ref == 'refs/heads/main' }} | |
| - uses: taiki-e/install-action@nextest | |
| - name: Check | |
| # We run `cargo check` to verify that the workspace compiles correctly before attempting | |
| # to execute the tests from each crate. This produces easier to read output if a compilation | |
| # error occurs | |
| run: make test-build | |
| - name: Test | |
| run: make test | |
| integration_test: | |
| name: integration tests | |
| # We only want to run the integration tests if the unit tests pass, and that has the added | |
| # benefit that we can re-use the cache from the unit test job for all integration tests | |
| needs: [unit_tests] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: ./.github/actions/cleanup-runner | |
| - name: Install Rust | |
| run: | | |
| rustup update --no-self-update | |
| rustc --version | |
| - name: Install all rustup toolchains present in the manifest | |
| run: | | |
| ./.github/auxiliary_scripts/install-toolchains.sh | |
| - name: Cache Cargo | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| shared-key: ${{ github.workflow }}-shared-tests | |
| prefix-key: ${{ env.RUST_CACHE_KEY }} | |
| # Do not persist the cache, leave that to the unit tests, we just use the cache here | |
| save-if: false | |
| - uses: taiki-e/install-action@nextest | |
| - name: Check | |
| # We run `cargo check` to verify that the workspace compiles correctly before attempting | |
| # to execute the tests from each crate. This produces easier to read output if a compilation | |
| # error occurs | |
| run: make test-build | |
| - name: Test | |
| run: make integration-test | |
| - name: Pre-release checks | |
| # These install real components from this repo's copy of the manifest and run them, so it | |
| # takes many minutes. Run them on main or on explicitly labelled PRs | |
| if: ${{ github.ref_name == 'main' || contains(github.event.pull_request.labels.*.name, 'check:install') }} | |
| run: make prerelease-test |