on: [push, pull_request] name: Continuous integration jobs: check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: cachix/install-nix-action@v20 - uses: icewind1991/attic-action@v1 with: name: ci instance: https://cache.icewind.me authToken: '${{ secrets.ATTIC_TOKEN }}' - run: nix build .#check msrv: runs-on: ubuntu-latest needs: check steps: - uses: actions/checkout@v3 - uses: cachix/install-nix-action@v20 - uses: icewind1991/attic-action@v1 with: name: ci instance: https://cache.icewind.me authToken: '${{ secrets.ATTIC_TOKEN }}' - run: nix build .#msrv clippy: runs-on: ubuntu-latest needs: check steps: - uses: actions/checkout@v3 - uses: cachix/install-nix-action@v20 - uses: icewind1991/attic-action@v1 with: name: ci instance: https://cache.icewind.me authToken: '${{ secrets.ATTIC_TOKEN }}' - run: nix build .#clippy tests: runs-on: ubuntu-latest needs: check steps: - uses: actions/checkout@v3 - uses: cachix/install-nix-action@v20 - uses: icewind1991/attic-action@v1 with: name: ci instance: https://cache.icewind.me authToken: '${{ secrets.ATTIC_TOKEN }}' - run: nix build .#test fmt: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: cachix/install-nix-action@v20 - uses: icewind1991/attic-action@v1 with: name: ci instance: https://cache.icewind.me authToken: '${{ secrets.ATTIC_TOKEN }}' - run: nix build .#fmt miri-matrix: runs-on: ubuntu-latest outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - uses: actions/checkout@v3 - uses: cachix/install-nix-action@v20 - id: set-matrix run: echo "matrix={\"target\":$(nix eval --json ".#miriTargets.x86_64-linux")}" | tee $GITHUB_OUTPUT miri-tests: runs-on: ubuntu-latest needs: [tests, miri-matrix] strategy: fail-fast: false matrix: ${{fromJson(needs.miri-matrix.outputs.matrix)}} steps: - uses: actions/checkout@v3 - uses: cachix/install-nix-action@v20 - uses: icewind1991/attic-action@v1 with: name: ci instance: https://cache.icewind.me authToken: '${{ secrets.ATTIC_TOKEN }}' - run: nix develop .#miri -c cargo miri test --target ${{ matrix.target }} semver: runs-on: ubuntu-latest needs: check steps: - uses: actions/checkout@v3 - name: Check semver uses: obi1kenobi/cargo-semver-checks-action@v2