@@ -37,14 +37,18 @@ jobs:
3737 check-changelog :
3838 runs-on : ubuntu-latest
3939 if : >-
40- github.event_name != 'pull_request' ||
41- !github.event.pull_request.draft
42- outputs :
43- has-additions : ${{ steps.validate.outputs.has-additions }}
44- metadata-only : ${{ steps.validate.outputs.metadata-only }}
40+ github.event_name == 'pull_request' &&
41+ !github.event.pull_request.draft &&
42+ (
43+ (github.event.action != 'labeled' && github.event.action != 'unlabeled') ||
44+ github.event.label.name == 'sweep-enabled' ||
45+ github.event.label.name == 'full-sweep-enabled' ||
46+ github.event.label.name == 'non-canary-full-sweep-enabled' ||
47+ github.event.label.name == 'full-sweep-fail-fast' ||
48+ github.event.label.name == 'full-sweep-fail-fast-no-canary'
49+ )
4550 steps :
4651 - name : Reject conflicting sweep labels
47- if : github.event_name == 'pull_request'
4852 env :
4953 SWEEP_LABELS : ${{ toJson(github.event.pull_request.labels.*.name) }}
5054 run : |
@@ -71,27 +75,13 @@ jobs:
7175 with :
7276 fetch-depth : 0
7377
74- - name : Validate perf-changelog.yaml
75- id : validate
78+ - name : Validate perf-changelog matrix
7679 run : |
7780 pip install pydantic pyyaml
78-
79- PR_ARGS=()
80- if [ "${{ github.event_name }}" = "pull_request" ]; then
81- BASE_REF="origin/${{ github.base_ref }}"
82- HEAD_REF="${{ github.event.pull_request.head.sha }}"
83- PR_ARGS=(--pr-number "${{ github.event.pull_request.number }}")
84- else
85- BASE_REF="${{ github.event.before }}"
86- HEAD_REF="${{ github.event.after }}"
87- fi
88-
8981 python3 utils/validate_perf_changelog.py \
9082 --changelog-file perf-changelog.yaml \
91- --base-ref "$BASE_REF" \
92- --head-ref "$HEAD_REF" \
93- --github-output "$GITHUB_OUTPUT" \
94- "${PR_ARGS[@]}"
83+ --base-ref "origin/${{ github.base_ref }}" \
84+ --head-ref "${{ github.event.pull_request.head.sha }}"
9585
9686 reuse-sweep-gate :
9787 needs : check-changelog
10393 if : >-
10494 always() &&
10595 needs.check-changelog.result == 'success' &&
106- needs.check-changelog.outputs.has-additions == 'true' &&
10796 github.event_name == 'pull_request' &&
10897 github.event.action == 'synchronize' &&
10998 !github.event.pull_request.draft &&
@@ -138,8 +127,10 @@ jobs:
138127 runs-on : ubuntu-latest
139128 if : >-
140129 always() &&
141- needs.check-changelog.result == 'success' &&
142- needs.check-changelog.outputs.has-additions == 'true' &&
130+ (
131+ needs.check-changelog.result == 'success' ||
132+ needs.check-changelog.result == 'skipped'
133+ ) &&
143134 (
144135 needs.reuse-sweep-gate.result == 'skipped' ||
145136 (
@@ -626,9 +617,9 @@ jobs:
626617
627618 reuse-ingest-artifacts :
628619 needs : setup
629- # `setup` runs via always() and depends on `check-changelog` plus
630- # `reuse-sweep-gate`, which is skipped on every push-to-main. Without
631- # always() here, that skipped gate poisons this job's implicit
620+ # `setup` runs via always() and depends on `check-changelog` and
621+ # `reuse-sweep-gate`, which are skipped on every push-to-main. Without
622+ # always() here, those skipped jobs poison this job's implicit
632623 # success() check and it is skipped even when setup succeeded with
633624 # reuse-enabled=true — silently breaking the merge-time ingest. Guard
634625 # explicitly on setup success instead (same pattern as
0 commit comments