CI #6176
Workflow file for this run
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 | |
| on: | |
| merge_group: | |
| pull_request: | |
| schedule: | |
| - cron: "0 3 * * 3" | |
| workflow_dispatch: | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| CARGO_TERM_COLOR: always | |
| permissions: | |
| contents: read | |
| jobs: | |
| check-up-to-dateness: | |
| outputs: | |
| is-up-to-date: ${{ steps.main.outputs.is-up-to-date }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - id: main | |
| uses: trailofbits/check-up-to-dateness@v1 | |
| test: | |
| needs: [check-up-to-dateness] | |
| if: needs.check-up-to-dateness.outputs.is-up-to-date != 'true' | |
| strategy: | |
| fail-fast: ${{ github.event_name == 'merge_group' }} | |
| matrix: | |
| environment: [ubuntu-latest, macos-latest, windows-latest] | |
| test: [third_party_0, third_party_1, trycmd, other] | |
| include: | |
| - environment: ubuntu-latest | |
| test: ci | |
| runs-on: ${{ matrix.environment }} | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.avm | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| ~/.dylint_drivers/ | |
| ~/.rustup/toolchains/ | |
| target/dylint/ | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| - name: Rustup | |
| run: rustup update | |
| - name: Install CI tools | |
| if: ${{ matrix.test == 'ci' }} | |
| run: | | |
| rustup +nightly component add clippy rustfmt | |
| cargo install cargo-dylint --git=https://github.com/trailofbits/dylint --no-default-features --features=cargo-cli || true | |
| cargo install dylint-link || true | |
| cargo install cargo-hack || true | |
| cargo install cargo-license || true | |
| cargo install cargo-sort || true | |
| cargo install cargo-supply-chain || true | |
| cargo install cargo-udeps --locked || true | |
| cargo install cargo-unmaintained || true | |
| - name: Install testing tools | |
| if: ${{ matrix.test != 'ci' }} | |
| uses: ./.github/actions/install-testing-tools | |
| - name: Install sqlite3 on Ubuntu | |
| if: ${{ matrix.environment == 'ubuntu-latest' }} | |
| run: | | |
| sudo apt update | |
| sudo apt install libsqlite3-dev | |
| - name: Free up space on Ubuntu | |
| if: ${{ matrix.environment == 'ubuntu-latest' }} | |
| run: | | |
| # https://github.com/actions/runner-images/issues/2606#issuecomment-772683150 | |
| sudo rm -rf /usr/local/lib/android | |
| sudo rm -rf /usr/share/dotnet | |
| sudo rm -rf /usr/share/swift | |
| # du -sh /usr/*/* 2>/dev/null | sort -h || true | |
| - name: Disable incremental compilation on Windows | |
| if: ${{ matrix.environment == 'windows-latest' }} | |
| run: echo 'CARGO_INCREMENTAL=0' >> "$GITHUB_ENV" | |
| - name: Enable debug logging | |
| if: ${{ runner.debug == 1 }} | |
| run: echo 'RUST_LOG=debug' >> "$GITHUB_ENV" | |
| - name: Build | |
| run: | | |
| if [[ '${{ matrix.test }}' != 'other' ]]; then | |
| $CARGO_TEST -p necessist --test ${{ matrix.test }} | |
| else | |
| $CARGO_TEST -p necessist --test general | |
| $CARGO_TEST -p necessist-backends | |
| $CARGO_TEST -p necessist-core | |
| fi | |
| env: | |
| CARGO_TEST: cargo test --no-run | |
| - name: Test | |
| run: | | |
| if [[ '${{ matrix.test }}' != 'other' ]]; then | |
| cargo test -p necessist --test ${{ matrix.test }} -- --nocapture | |
| else | |
| cargo test -p necessist --test general | |
| cargo test -p necessist-backends | |
| cargo test -p necessist-core | |
| fi | |
| all-checks: | |
| needs: [test] | |
| # smoelius: From "Defining prerequisite jobs" | |
| # (https://docs.github.com/en/actions/using-jobs/using-jobs-in-a-workflow#defining-prerequisite-jobs): | |
| # > If you would like a job to run even if a job it is dependent on did not succeed, use the | |
| # > `always()` conditional expression in `jobs.<job_id>.if`. | |
| if: ${{ always() }} | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check results | |
| if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }} | |
| run: exit 1 |