name: CI on: push: branches: [main] paths: - "**.lock" - "**.rs" - "**.nix" - "Cargo.toml" - ".github/workflows/ci.yaml" pull_request: paths: - "**.lock" - "**.rs" - "**.nix" - "Cargo.toml" - ".github/workflows/ci.yaml" workflow_dispatch: jobs: build: name: Build strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest] runs-on: ${{ matrix.os }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Nix uses: cachix/install-nix-action@v31 - name: Run build run: | nix build --print-build-logs .#nix-forecast-debug format-and-lint: name: Format and lint runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Nix uses: cachix/install-nix-action@v31 - name: Run flake checks run: | nix flake check --print-build-logs --show-trace release-gate: name: CI Release gate needs: [build, format-and-lint] if: ${{ always() }} runs-on: ubuntu-latest steps: - name: Exit with error if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }} run: exit 1