diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 3f8c3d3a1a..32d803aa14 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -23,8 +23,13 @@ jobs: name: "Determine changes" runs-on: ubuntu-latest outputs: + # Flag that is raised when any code that affects linter is changed linter: ${{ steps.changed.outputs.linter_any_changed }} + # Flag that is raised when any code that affects formatter is changed formatter: ${{ steps.changed.outputs.formatter_any_changed }} + # Flag that is raised when any code is changed + # This is superset of the linter and formatter + code: ${{ steps.changed.outputs.code_any_changed }} steps: - uses: actions/checkout@v4 with: @@ -62,6 +67,12 @@ jobs: - python/** - .github/workflows/ci.yaml + code: + - "*/**" + - "!**/*.md" + - "!docs/**" + - "!assets/**" + cargo-fmt: name: "cargo fmt" runs-on: ubuntu-latest @@ -74,6 +85,8 @@ jobs: cargo-clippy: name: "cargo clippy" runs-on: ubuntu-latest + needs: determine_changes + if: needs.determine_changes.outputs.code == 'true' || github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v4 - name: "Install Rust toolchain" @@ -88,6 +101,8 @@ jobs: cargo-test-linux: runs-on: ubuntu-latest + needs: determine_changes + if: needs.determine_changes.outputs.code == 'true' || github.ref == 'refs/heads/main' name: "cargo test (linux)" steps: - uses: actions/checkout@v4 @@ -112,6 +127,8 @@ jobs: cargo-test-windows: runs-on: windows-latest + needs: determine_changes + if: needs.determine_changes.outputs.code == 'true' || github.ref == 'refs/heads/main' name: "cargo test (windows)" steps: - uses: actions/checkout@v4 @@ -129,6 +146,8 @@ jobs: cargo-test-wasm: runs-on: ubuntu-latest + needs: determine_changes + if: needs.determine_changes.outputs.code == 'true' || github.ref == 'refs/heads/main' name: "cargo test (wasm)" steps: - uses: actions/checkout@v4 @@ -148,6 +167,8 @@ jobs: cargo-fuzz: runs-on: ubuntu-latest + needs: determine_changes + if: needs.determine_changes.outputs.code == 'true' || github.ref == 'refs/heads/main' name: "cargo fuzz" steps: - uses: actions/checkout@v4 @@ -165,6 +186,8 @@ jobs: scripts: name: "test scripts" runs-on: ubuntu-latest + needs: determine_changes + if: needs.determine_changes.outputs.code == 'true' || github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v4 - name: "Install Rust toolchain" @@ -188,8 +211,7 @@ jobs: # Only runs on pull requests, since that is the only we way we can find the base version for comparison. # Ecosystem check needs linter and/or formatter changes. if: github.event_name == 'pull_request' && ${{ - needs.determine_changes.outputs.linter == 'true' || - needs.determine_changes.outputs.formatter == 'true' + needs.determine_changes.outputs.code == 'true' }} steps: - uses: actions/checkout@v4 @@ -298,6 +320,8 @@ jobs: cargo-udeps: name: "cargo udeps" runs-on: ubuntu-latest + needs: determine_changes + if: needs.determine_changes.outputs.code == 'true' || github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v4 - name: "Install nightly Rust toolchain" @@ -417,7 +441,10 @@ jobs: check-ruff-lsp: name: "test ruff-lsp" runs-on: ubuntu-latest - needs: cargo-test-linux + needs: + - cargo-test-linux + - determine_changes + if: needs.determine_changes.outputs.code == 'true' || github.ref == 'refs/heads/main' steps: - uses: extractions/setup-just@v1 env: @@ -455,6 +482,8 @@ jobs: benchmarks: runs-on: ubuntu-latest + needs: determine_changes + if: needs.determine_changes.outputs.code == 'true' || github.ref == 'refs/heads/main' steps: - name: "Checkout Branch" uses: actions/checkout@v4