@@ -10,25 +10,52 @@ name: Release install smoke
1010# introduces them, not on the first real tag. The image is loaded into kind,
1111# never pushed — no registry credentials.
1212on :
13+ # No paths filter on the trigger: `smoke (helm)` and `smoke (manifest)` are
14+ # *required* status checks, and a workflow skipped at the trigger never
15+ # reports them, leaving the required contexts stuck in "Expected" and
16+ # blocking the PR forever (e.g. docs-only PRs). Path filtering lives in the
17+ # `changes` job below instead; the matrix job is skipped via `if:` when
18+ # nothing release-relevant changed, and a skipped check counts as passing.
1319 pull_request :
14- paths :
15- - ' .github/workflows/release-smoke.yml'
16- - ' .github/workflows/docker-publish.yml'
17- - ' .github/workflows/release-assets.yml'
18- - ' .github/workflows/helm-publish.yml'
19- - ' hack/release-smoke.sh'
20- - ' charts/**'
21- - ' Makefile'
22- - ' Dockerfile'
23- - ' api/**'
2420 workflow_dispatch :
2521
2622concurrency :
2723 group : release-smoke-${{ github.ref }}
2824 cancel-in-progress : true
2925
3026jobs :
27+ changes :
28+ # Cheap (~seconds, no checkout) gate. PR-only: manual dispatch always runs
29+ # the smoke matrix unconditionally (see the `if` on smoke).
30+ if : github.event_name == 'pull_request'
31+ runs-on : ubuntu-latest
32+ outputs :
33+ release : ${{ steps.filter.outputs.release }}
34+ steps :
35+ - uses : dorny/paths-filter@v3
36+ id : filter
37+ with :
38+ # True when the PR touches the tag-release machinery or anything it
39+ # ships. Matches the paths this workflow used to filter on at the
40+ # trigger; PRs that touch none of these skip the two kind smokes.
41+ filters : |
42+ release:
43+ - '.github/workflows/release-smoke.yml'
44+ - '.github/workflows/docker-publish.yml'
45+ - '.github/workflows/release-assets.yml'
46+ - '.github/workflows/helm-publish.yml'
47+ - 'hack/release-smoke.sh'
48+ - 'charts/**'
49+ - 'Makefile'
50+ - 'Dockerfile'
51+ - 'api/**'
52+
3153 smoke :
54+ needs : changes
55+ # Always run on manual dispatch; for PRs, run only when release-relevant
56+ # files changed. When skipped, each matrix leg's required check still
57+ # reports as "skipped" (= passing), so the PR is not blocked.
58+ if : ${{ github.event_name != 'pull_request' || needs.changes.outputs.release == 'true' }}
3259 runs-on : ubuntu-latest
3360 timeout-minutes : 30
3461 permissions :
0 commit comments