name: CI on: push: pull_request: permissions: contents: read env: CARGO_TERM_COLOR: always CLICOLOR: 1 concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: pre_ci: uses: dtolnay/.github/.github/workflows/pre_ci.yml@master check: name: Check needs: pre_ci if: needs.pre_ci.outputs.continue runs-on: ubuntu-latest timeout-minutes: 5 steps: - uses: actions/checkout@v4 - name: Install Nix uses: cachix/install-nix-action@v31 with: github_access_token: ${{ secrets.GITHUB_TOKEN }} - uses: Swatinem/rust-cache@v2 - name: cargo check run: nix develop --command just check env: RUSTFLAGS: -Dwarnings rustfmt: name: Rustfmt needs: pre_ci if: needs.pre_ci.outputs.continue runs-on: ubuntu-latest timeout-minutes: 5 steps: - uses: actions/checkout@v4 - name: Install Nix uses: cachix/install-nix-action@v31 with: github_access_token: ${{ secrets.GITHUB_TOKEN }} - uses: Swatinem/rust-cache@v2 - name: cargo fmt run: nix develop --command just check-fmt env: RUSTFLAGS: -Dwarnings clippy: name: Clippy needs: pre_ci if: needs.pre_ci.outputs.continue runs-on: ubuntu-latest timeout-minutes: 5 steps: - uses: actions/checkout@v4 - name: Install Nix uses: cachix/install-nix-action@v31 with: github_access_token: ${{ secrets.GITHUB_TOKEN }} - uses: Swatinem/rust-cache@v2 - name: cargo clippy run: nix develop --command just clippy env: RUSTFLAGS: -Dwarnings cargo-deny: name: Cargo deny runs-on: ubuntu-latest needs: pre_ci if: needs.pre_ci.outputs.continue steps: - uses: actions/checkout@v4 - name: Check Rust Code uses: EmbarkStudios/cargo-deny-action@v2 test-hosted: name: Hosted Tests needs: pre_ci if: needs.pre_ci.outputs.continue runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@v4 - name: Install Nix uses: cachix/install-nix-action@v31 with: github_access_token: ${{ secrets.GITHUB_TOKEN }} - uses: Swatinem/rust-cache@v2 - name: just test-hosted run: nix develop --command just test test-miri: name: Miri Tests needs: pre_ci if: needs.pre_ci.outputs.continue runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@v4 - name: Install Nix uses: cachix/install-nix-action@v31 with: github_access_token: ${{ secrets.GITHUB_TOKEN }} - uses: Swatinem/rust-cache@v2 - name: just test-miri run: nix develop --command just miri test-loom: name: Loom Tests needs: pre_ci if: needs.pre_ci.outputs.continue runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@v4 - name: Install Nix uses: cachix/install-nix-action@v31 with: github_access_token: ${{ secrets.GITHUB_TOKEN }} - uses: Swatinem/rust-cache@v2 - name: just test-loom run: nix develop --command just loom test-riscv64: name: "On-Target Tests: RISCV 64-bit" needs: pre_ci if: needs.pre_ci.outputs.continue runs-on: ubuntu-latest timeout-minutes: 10 steps: - uses: actions/checkout@v4 - name: Install Nix uses: cachix/install-nix-action@v31 with: github_access_token: ${{ secrets.GITHUB_TOKEN }} - uses: Swatinem/rust-cache@v2 - name: just test-riscv64 run: nix develop --command just test-riscv64