Skip to content

Commit 247efc6

Browse files
committed
fix(ci): propagate queue bypass through test jobs
Signed-off-by: oliver könig <okoenig@nvidia.com>
1 parent 1ddf565 commit 247efc6

2 files changed

Lines changed: 62 additions & 1 deletion

File tree

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
workflow="${1:-.github/workflows/cicd-main.yml}"
5+
6+
awk '
7+
function check_job() {
8+
if (!in_queue_chain || !has_success) {
9+
return
10+
}
11+
12+
checked++
13+
if (!allows_queue_bypass) {
14+
print job " uses success() but does not allow the intentional queue skip" > "/dev/stderr"
15+
failed = 1
16+
}
17+
}
18+
19+
/^ [[:alnum:]_-]+:$/ {
20+
check_job()
21+
job = $1
22+
sub(/:$/, "", job)
23+
in_queue_chain = (in_queue_chain || job == "cicd-compute-build-matrix")
24+
if (job == "Nemo_CICD_Test") {
25+
in_queue_chain = 0
26+
}
27+
has_success = 0
28+
allows_queue_bypass = 0
29+
next
30+
}
31+
32+
in_queue_chain && /success\(\)/ {
33+
has_success = 1
34+
}
35+
36+
in_queue_chain && /needs\.configure\.outputs\.skip_queue == '\''true'\'' && !failure\(\)/ {
37+
allows_queue_bypass = 1
38+
}
39+
40+
END {
41+
check_job()
42+
if (checked == 0) {
43+
print "No queue-dependent success() conditions found" > "/dev/stderr"
44+
exit 1
45+
}
46+
exit failed
47+
}
48+
' "$workflow"

‎.github/workflows/cicd-main.yml‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@ jobs:
287287
run: |
288288
.github/scripts/test_cache_keys.sh
289289
.github/scripts/test_docker_dependency_layers.sh
290+
.github/scripts/test_queue_bypass.sh
290291
291292
- name: Check lint
292293
run: |
@@ -317,7 +318,7 @@ jobs:
317318
(
318319
success()
319320
|| needs.pre-flight.outputs.is_ci_workload == 'true'
320-
|| needs.configure.outputs.skip_queue == 'true'
321+
|| (needs.configure.outputs.skip_queue == 'true' && !failure())
321322
|| needs.pre-flight.outputs.force_run_all == 'true'
322323
|| github.event_name == 'merge_group'
323324
)
@@ -358,6 +359,7 @@ jobs:
358359
(
359360
success()
360361
|| needs.pre-flight.outputs.is_ci_workload == 'true'
362+
|| (needs.configure.outputs.skip_queue == 'true' && !failure())
361363
|| needs.pre-flight.outputs.force_run_all == 'true'
362364
|| github.event_name == 'merge_group'
363365
)
@@ -537,6 +539,7 @@ jobs:
537539
(
538540
success()
539541
|| needs.pre-flight.outputs.is_ci_workload == 'true'
542+
|| (needs.configure.outputs.skip_queue == 'true' && !failure())
540543
|| needs.pre-flight.outputs.force_run_all == 'true'
541544
|| github.event_name == 'merge_group'
542545
)
@@ -568,6 +571,7 @@ jobs:
568571
(
569572
success()
570573
|| needs.pre-flight.outputs.is_ci_workload == 'true'
574+
|| (needs.configure.outputs.skip_queue == 'true' && !failure())
571575
|| needs.pre-flight.outputs.force_run_all == 'true'
572576
|| github.event_name == 'merge_group'
573577
)
@@ -609,6 +613,7 @@ jobs:
609613
(
610614
success()
611615
|| needs.pre-flight.outputs.is_ci_workload == 'true'
616+
|| (needs.configure.outputs.skip_queue == 'true' && !failure())
612617
|| needs.pre-flight.outputs.force_run_all == 'true'
613618
|| github.event_name == 'merge_group'
614619
)
@@ -657,6 +662,7 @@ jobs:
657662
(
658663
success()
659664
|| needs.pre-flight.outputs.is_ci_workload == 'true'
665+
|| (needs.configure.outputs.skip_queue == 'true' && !failure())
660666
|| needs.pre-flight.outputs.force_run_all == 'true'
661667
|| github.event_name == 'merge_group'
662668
)
@@ -719,6 +725,7 @@ jobs:
719725
(
720726
success()
721727
|| needs.pre-flight.outputs.is_ci_workload == 'true'
728+
|| (needs.configure.outputs.skip_queue == 'true' && !failure())
722729
|| needs.pre-flight.outputs.force_run_all == 'true'
723730
|| github.event_name == 'merge_group'
724731
)
@@ -766,6 +773,7 @@ jobs:
766773
(
767774
success()
768775
|| needs.pre-flight.outputs.is_ci_workload == 'true'
776+
|| (needs.configure.outputs.skip_queue == 'true' && !failure())
769777
|| needs.pre-flight.outputs.force_run_all == 'true'
770778
|| github.event_name == 'merge_group'
771779
)
@@ -814,6 +822,7 @@ jobs:
814822
(
815823
success()
816824
|| needs.pre-flight.outputs.is_ci_workload == 'true'
825+
|| (needs.configure.outputs.skip_queue == 'true' && !failure())
817826
|| needs.pre-flight.outputs.force_run_all == 'true'
818827
|| github.event_name == 'merge_group'
819828
)
@@ -901,6 +910,7 @@ jobs:
901910
(
902911
success()
903912
|| needs.pre-flight.outputs.is_ci_workload == 'true'
913+
|| (needs.configure.outputs.skip_queue == 'true' && !failure())
904914
|| needs.pre-flight.outputs.force_run_all == 'true'
905915
|| github.event_name == 'merge_group'
906916
)
@@ -963,6 +973,7 @@ jobs:
963973
(
964974
success()
965975
|| needs.pre-flight.outputs.is_ci_workload == 'true'
976+
|| (needs.configure.outputs.skip_queue == 'true' && !failure())
966977
|| needs.pre-flight.outputs.force_run_all == 'true'
967978
|| github.event_name == 'merge_group'
968979
)
@@ -1018,6 +1029,7 @@ jobs:
10181029
(
10191030
success()
10201031
|| needs.pre-flight.outputs.is_ci_workload == 'true'
1032+
|| (needs.configure.outputs.skip_queue == 'true' && !failure())
10211033
|| needs.pre-flight.outputs.force_run_all == 'true'
10221034
|| github.event_name == 'merge_group'
10231035
)
@@ -1074,6 +1086,7 @@ jobs:
10741086
(
10751087
success()
10761088
|| needs.pre-flight.outputs.is_ci_workload == 'true'
1089+
|| (needs.configure.outputs.skip_queue == 'true' && !failure())
10771090
|| needs.pre-flight.outputs.force_run_all == 'true'
10781091
|| github.event_name == 'merge_group'
10791092
)

0 commit comments

Comments
 (0)