Skip to content

Commit a8c6b3f

Browse files
authored
Merge pull request #1490 from DeusData/ci/dry-run-skip-smoke
ci(dry-run): add skip_smoke for a direct build → VirusTotal pass
2 parents e16c4af + 95b3ba9 commit a8c6b3f

1 file changed

Lines changed: 22 additions & 6 deletions

File tree

‎.github/workflows/dry-run.yml‎

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,18 @@
1313
# back clean one day and flagged the next, which is precisely why finding out
1414
# during a dry run is worth the wait.
1515
#
16-
# Two independent skips, because they answer different questions:
17-
# skip_builds no artifacts at all — "do lint and tests pass?"
18-
# skip_virustotal build + smoke + soak, no scan — "do the archives pass CI?"
19-
# The second exists because the scan costs API quota and polls for up to two
20-
# hours, which is pure noise while iterating on a build or smoke failure.
16+
# The skips are independent because they answer different questions:
17+
# skip_builds no artifacts at all "do lint and tests pass?"
18+
# skip_smoke build + scan, no smoke "does this diff scan red?"
19+
# skip_virustotal build + smoke + soak, no scan "do the archives pass CI?"
20+
#
21+
# skip_virustotal exists because the scan costs API quota and polls for up to
22+
# two hours, which is pure noise while iterating on a build or smoke failure.
23+
#
24+
# skip_smoke is the opposite trip: go straight from build to VirusTotal when the
25+
# question is only whether a diff turns the scan red. Smoke is in the VirusTotal
26+
# job's needs, so without this a smoke failure would withhold exactly the answer
27+
# such a run was dispatched to get.
2128
name: Dry Run
2229

2330
on:
@@ -35,6 +42,10 @@ on:
3542
description: 'Skip build + smoke (also skips VirusTotal — nothing to scan)'
3643
type: boolean
3744
default: false
45+
skip_smoke:
46+
description: 'Skip smoke (build straight to VirusTotal)'
47+
type: boolean
48+
default: false
3849
skip_virustotal:
3950
description: 'Skip VirusTotal scan (still builds + smokes the archives)'
4051
type: boolean
@@ -86,7 +97,7 @@ jobs:
8697
# (including the macos-15-intel darwin-amd64 binary) is blocking now, so a
8798
# failed/missing platform binary correctly stops smoke — see _build.yml.
8899
smoke:
89-
if: ${{ inputs.skip_builds != true && !cancelled() && needs.build.result != 'failure' && needs.build.result != 'skipped' }}
100+
if: ${{ inputs.skip_builds != true && inputs.skip_smoke != true && !cancelled() && needs.build.result != 'failure' && needs.build.result != 'skipped' }}
90101
needs: [build]
91102
uses: ./.github/workflows/_smoke.yml
92103
with:
@@ -112,6 +123,11 @@ jobs:
112123
# take up to two hours) and the one most likely to be waiting on someone
113124
# else's queue, so it must not delay the feedback that is actually about our
114125
# code.
126+
#
127+
# It needs smoke and soak only so it runs LAST, not because it depends on
128+
# them: a skipped smoke or soak leaves the scan reachable (result 'skipped',
129+
# which is not 'failure'), while a FAILED one withholds it — if the artifacts
130+
# are broken, a verdict on them is not worth two hours of polling.
115131
virustotal:
116132
if: ${{ inputs.skip_builds != true && inputs.skip_virustotal != true && !cancelled() && needs.build.result == 'success' && needs.smoke.result != 'failure' && needs.soak.result != 'failure' }}
117133
needs: [build, smoke, soak]

0 commit comments

Comments
 (0)