name: CI on: push: branches: [main] pull_request: workflow_dispatch: jobs: build: name: Build strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@stable with: toolchain: stable - name: Setup Rust cache uses: Swatinem/rust-cache@v2 - name: Run build run: cargo build --locked --release format-and-lint: name: Format & lint runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Nix uses: DeterminateSystems/nix-installer-action@v12 - name: Setup Nix cache uses: DeterminateSystems/magic-nix-cache-action@v6 - name: Run treefmt run: | nix flake check --all-systems --print-build-logs --show-trace release-gate: name: CI Release Gate needs: [build, format-and-lint] runs-on: ubuntu-latest steps: - name: Exit with result run: echo "We're good to go!"