Skip to content

Commit cbfff18

Browse files
Demos Visual Tests: replace job-level always() with !cancelled() so cancel-in-progress can stop jobs
When a workflow run is canceled (by concurrency cancel-in-progress or manually), GitHub re-evaluates job-level if conditions and lets jobs whose condition still holds keep running. always() holds even after cancellation, so every heavy job survived the cancel: the superseded run kept occupying devextreme-shr2 runners until it drained naturally, while the new run waited in pending for the whole time. !cancelled() behaves identically in normal flows (it overrides the implicit success() gate the same way) but turns false once the run is canceled, so jobs actually stop. Step-level always() (result reporting and artifact upload steps) is intentional and left untouched.
1 parent ad86c5b commit cbfff18

1 file changed

Lines changed: 14 additions & 14 deletions

File tree

‎.github/workflows/visual-tests-demos.yml‎

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ jobs:
7676
name: Determine scope for framework tests
7777
needs: [check-should-run, get-changes]
7878
if: |
79-
always() &&
79+
!cancelled() &&
8080
needs.check-should-run.outputs.should-run == 'true' &&
8181
(needs.get-changes.result == 'success' || needs.get-changes.result == 'skipped')
8282
outputs:
@@ -102,7 +102,7 @@ jobs:
102102
name: Determine jQuery test matrix
103103
needs: [check-should-run, determine-framework-tests-scope]
104104
if: |
105-
always() &&
105+
!cancelled() &&
106106
needs.check-should-run.outputs.should-run == 'true' &&
107107
needs.determine-framework-tests-scope.result == 'success'
108108
outputs:
@@ -147,7 +147,7 @@ jobs:
147147
name: Build DevExtreme
148148
needs: [check-should-run, determine-framework-tests-scope]
149149
if: |
150-
always() &&
150+
!cancelled() &&
151151
needs.check-should-run.outputs.should-run == 'true' &&
152152
needs.determine-framework-tests-scope.result == 'success'
153153
env:
@@ -279,7 +279,7 @@ jobs:
279279
timeout-minutes: 30
280280
needs: [check-should-run, determine-framework-tests-scope, build-devextreme]
281281
if: |
282-
always() &&
282+
!cancelled() &&
283283
needs.check-should-run.outputs.should-run == 'true' &&
284284
needs.determine-framework-tests-scope.result == 'success' &&
285285
needs.determine-framework-tests-scope.outputs.framework-tests-scope != 'none' &&
@@ -351,7 +351,7 @@ jobs:
351351
name: Check TS and lint code base
352352
needs: [check-should-run, determine-framework-tests-scope, build-devextreme]
353353
if: |
354-
always() &&
354+
!cancelled() &&
355355
needs.check-should-run.outputs.should-run == 'true' &&
356356
needs.determine-framework-tests-scope.result == 'success' &&
357357
needs.determine-framework-tests-scope.outputs.framework-tests-scope != 'none' &&
@@ -494,7 +494,7 @@ jobs:
494494
timeout-minutes: 20
495495
needs: [check-should-run, get-changes, build-devextreme, determine-framework-tests-scope]
496496
if: |
497-
always() &&
497+
!cancelled() &&
498498
needs.check-should-run.outputs.should-run == 'true' &&
499499
needs.determine-framework-tests-scope.result == 'success' &&
500500
needs.determine-framework-tests-scope.outputs.framework-tests-scope == 'changed' &&
@@ -607,7 +607,7 @@ jobs:
607607
timeout-minutes: 20
608608
needs: [check-should-run, build-devextreme, determine-framework-tests-scope]
609609
if: |
610-
always() &&
610+
!cancelled() &&
611611
needs.check-should-run.outputs.should-run == 'true' &&
612612
needs.determine-framework-tests-scope.result == 'success' &&
613613
needs.determine-framework-tests-scope.outputs.framework-tests-scope == 'all' &&
@@ -674,7 +674,7 @@ jobs:
674674
testcafe-jquery:
675675
needs: [check-should-run, build-devextreme, determine-framework-tests-scope, determine-jquery-test-matrix]
676676
if: |
677-
always() &&
677+
!cancelled() &&
678678
needs.check-should-run.outputs.should-run == 'true' &&
679679
needs.determine-framework-tests-scope.result == 'success' &&
680680
needs.determine-jquery-test-matrix.result == 'success' &&
@@ -832,7 +832,7 @@ jobs:
832832
testcafe-frameworks-all:
833833
needs: [check-should-run, determine-framework-tests-scope, build-demos]
834834
if: |
835-
always() &&
835+
!cancelled() &&
836836
needs.check-should-run.outputs.should-run == 'true' &&
837837
needs.determine-framework-tests-scope.result == 'success' &&
838838
needs.determine-framework-tests-scope.outputs.framework-tests-scope == 'all' &&
@@ -980,7 +980,7 @@ jobs:
980980
testcafe-frameworks-changed:
981981
needs: [check-should-run, determine-framework-tests-scope, build-demos]
982982
if: |
983-
always() &&
983+
!cancelled() &&
984984
needs.check-should-run.outputs.should-run == 'true' &&
985985
needs.determine-framework-tests-scope.result == 'success' &&
986986
needs.determine-framework-tests-scope.outputs.framework-tests-scope == 'changed' &&
@@ -1106,7 +1106,7 @@ jobs:
11061106
merge-artifacts:
11071107
runs-on: ubuntu-latest
11081108
needs: [testcafe-jquery, testcafe-frameworks-all, testcafe-frameworks-changed]
1109-
if: always() && (needs.testcafe-jquery.result == 'failure' || needs.testcafe-frameworks-all.result == 'failure' || needs.testcafe-frameworks-changed.result == 'failure')
1109+
if: ${{ !cancelled() && (needs.testcafe-jquery.result == 'failure' || needs.testcafe-frameworks-all.result == 'failure' || needs.testcafe-frameworks-changed.result == 'failure') }}
11101110

11111111
steps:
11121112
- name: Merge jQuery screenshot artifacts
@@ -1158,7 +1158,7 @@ jobs:
11581158
name: CSP check (jQuery)
11591159
needs: [check-should-run, build-devextreme]
11601160
if: |
1161-
always() &&
1161+
!cancelled() &&
11621162
needs.check-should-run.outputs.should-run == 'true' &&
11631163
needs.build-devextreme.result == 'success'
11641164
runs-on: devextreme-shr2
@@ -1231,7 +1231,7 @@ jobs:
12311231
name: ${{ matrix.SHARD_TOTAL == 1 && format('CSP check ({0})', matrix.FRAMEWORK) || format('CSP check ({0} {1}/{2})', matrix.FRAMEWORK, matrix.SHARD_INDEX, matrix.SHARD_TOTAL) }}
12321232
needs: [check-should-run, determine-framework-tests-scope, build-devextreme]
12331233
if: |
1234-
always() &&
1234+
!cancelled() &&
12351235
needs.check-should-run.outputs.should-run == 'true' &&
12361236
needs.determine-framework-tests-scope.result == 'success' &&
12371237
needs.determine-framework-tests-scope.outputs.framework-tests-scope != 'none' &&
@@ -1330,7 +1330,7 @@ jobs:
13301330
name: CSP Violations Summary
13311331
runs-on: ubuntu-latest
13321332
needs: [check-should-run, csp-check-jquery, csp-check-frameworks]
1333-
if: always() && needs.check-should-run.outputs.should-run == 'true'
1333+
if: ${{ !cancelled() && needs.check-should-run.outputs.should-run == 'true' }}
13341334
timeout-minutes: 5
13351335

13361336
steps:

0 commit comments

Comments
 (0)