Skip to content

Commit 3e9d162

Browse files
authored
Merge branch 'main' into chore/copy-pr-bot-add-srao-nv
2 parents 1350642 + 534a9f5 commit 3e9d162

8 files changed

Lines changed: 370 additions & 371 deletions

File tree

.github/workflows/evidence-ingest.yaml

Lines changed: 41 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -233,42 +233,33 @@ jobs:
233233
done
234234
235235
# ---------------------------------------------------------------------
236-
# Job 3: refresh the published dashboard. Every successful ingest lands
237-
# new evidence in GCS, so the GP5 dashboard (evidence-dashboard-publish)
238-
# must re-render to surface it — otherwise the site is stale until the
239-
# next unrelated push to main. The push-to-main ingest path already
240-
# re-triggers the dashboard via its own `push:` trigger, but the
241-
# first-party UAT path is a NESTED workflow_call (up to four levels deep:
242-
# uat-run -> uat-{aws,gcp,azure} -> evidence-ingest), which emits no
243-
# top-level run event and cannot nest a fifth reusable workflow. A
244-
# workflow_dispatch decouples cleanly: it starts a fresh top-level run
245-
# regardless of how deep this ingest was invoked.
236+
# Job 3: trigger downstream evidence consumers. Every successful ingest lands
237+
# verified evidence in GCS, so the static dashboard must re-render and the
238+
# live TestGrid publisher must receive the same digest-pinned bundle ref.
246239
#
247-
# Held in a SEPARATE job so the GCS-credentialed publish job never also
248-
# carries actions:write. `needs: publish` inherits the produced gate — a
249-
# skipped/failed publish skips this too, so the dashboard only re-renders
250-
# after evidence is actually in the bucket. The dashboard's own
251-
# concurrency group ("pages", cancel-in-progress:false) coalesces the
252-
# flurry from a multi-cell nightly batch into a single queued rebuild
253-
# that the newest dispatch supersedes.
240+
# The first-party UAT path is a nested workflow_call (uat-run -> cloud UAT ->
241+
# evidence-ingest), where workflow_run chaining is suppressed for nightly runs
242+
# initiated by GITHUB_TOKEN. Explicit workflow_dispatch starts fresh top-level
243+
# runs regardless of nesting depth or the original UAT actor.
254244
#
255-
# The refresh is BEST-EFFORT: the evidence is already in the bucket and the
256-
# dashboard self-heals on the next ingest or push to main, so a transient
257-
# dispatch failure must never fail this workflow_call chain — otherwise the
258-
# nightly controller would record a fully-successful, multi-hour UAT cell as
259-
# a failed leg. The dispatch step retries, then warns (never fails), so
260-
# staleness is surfaced but not fatal — the same not-cry-wolf posture as
261-
# uat-superseded-notice.yaml.
245+
# Held in a separate job so the GCS-credentialed publish job never also
246+
# carries actions:write. `needs: publish` ensures downstream consumers are
247+
# triggered only after verified evidence is persisted.
248+
#
249+
# Dispatch is best-effort: evidence is already durable, and a transient
250+
# dispatch failure must not turn a successful multi-hour UAT cell red. Each
251+
# dispatch retries and emits a visible warning on exhaustion. The dashboard
252+
# self-heals on the next ingest; TestGrid can be backfilled by bundle ref.
262253
# ---------------------------------------------------------------------
263-
trigger-dashboard:
264-
name: Trigger dashboard publish
254+
trigger-publishes:
255+
name: Trigger evidence publishes
265256
needs: publish
266257
if: github.repository == 'nvidia/aicr'
267258
runs-on: ubuntu-latest
268259
timeout-minutes: 5
269260
permissions:
270261
contents: read
271-
actions: write # dispatch evidence-dashboard-publish.yaml
262+
actions: write # dispatch dashboard and TestGrid workflows
272263
steps:
273264
- name: Dispatch dashboard publish
274265
env:
@@ -293,3 +284,26 @@ jobs:
293284
sleep 5
294285
done
295286
echo "::warning::could not dispatch Evidence: Dashboard Publish after 3 attempts; the dashboard will refresh on the next ingest or push to main"
287+
288+
- name: Dispatch TestGrid publish
289+
if: >-
290+
inputs.bundle_ref != '' &&
291+
(github.ref_name == 'main' || startsWith(github.ref_name, 'release/'))
292+
env:
293+
BUNDLE_REF: ${{ inputs.bundle_ref }}
294+
GH_TOKEN: ${{ github.token }}
295+
REPO: ${{ github.repository }}
296+
run: |
297+
set -euo pipefail
298+
for attempt in 1 2 3; do
299+
if gh workflow run testgrid-publish.yml \
300+
--repo "${REPO}" --ref main \
301+
-f bundle_ref="${BUNDLE_REF}" \
302+
-f environment=prod; then
303+
echo "dispatched TestGrid Publish on main"
304+
exit 0
305+
fi
306+
echo "dispatch attempt ${attempt} failed; retrying in 5s..."
307+
sleep 5
308+
done
309+
echo "::warning::could not dispatch TestGrid Publish after 3 attempts; backfill bundle ${BUNDLE_REF} manually"

0 commit comments

Comments
 (0)