TestGrid Link Check #3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| # Weekly link-integrity check for the recipe-health Evidence deep-links | |
| # (RQ2 / #1284). | |
| # | |
| # Structurally a clone of bom-refresh.yaml (weekly schedule + workflow_dispatch, | |
| # read-only GITHUB_TOKEN, ubuntu-latest, timeout-minutes) with one deliberate | |
| # divergence: it never opens a PR and never edits a doc. Instead it runs | |
| # tools/testgrid-link-check, which reads the committed dashboard presence | |
| # manifest (pkg/testgrid/presence.yaml — the coordinates RQ1 deep-links) and | |
| # fetches the live dashboard data with a bounded, origin-pinned HTTP client | |
| # (off-origin redirects refused), then emits a Markdown report to | |
| # $GITHUB_STEP_SUMMARY. A linked coordinate the live dashboard no longer serves | |
| # is reported as a dead-link warning; a coordinate not yet linked is expected | |
| # and not a warning. | |
| # | |
| # Advisory only, mirroring the warning-only recipe-evidence gate: it never | |
| # blocks a merge (the job exits 0 even when warnings exist). Coordinate | |
| # resolution against the live SPA is necessarily separate from lychee, which | |
| # runs --offline and excludes design/ (fern-docs-ci.yaml) and so resolves no | |
| # dynamic URLs at all — this is the right home, not a lychee tweak. | |
| name: TestGrid Link Check | |
| on: | |
| schedule: | |
| # Mondays 07:00 UTC, offset from bom-refresh (06:00) and recipe-health-refresh | |
| # (06:30) so the three weekly jobs do not contend for runners at the same minute. | |
| - cron: "0 7 * * 1" | |
| workflow_dispatch: {} | |
| # Serialize runs so a manual workflow_dispatch cannot race a scheduled run. | |
| concurrency: | |
| group: ${{ github.workflow }} | |
| permissions: | |
| contents: read | |
| jobs: | |
| check: | |
| name: Verify recipe-health Evidence deep-links against the live dashboard | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Load versions | |
| id: versions | |
| uses: ./.github/actions/load-versions | |
| - name: Set up Go | |
| uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0 | |
| with: | |
| go-version: ${{ steps.versions.outputs.go }} | |
| cache: false | |
| # No Helm setup: this job only reads an embedded manifest and fetches one | |
| # JSON document — it templates no chart and touches no cluster. | |
| - name: Check Evidence deep-links and write report to step summary | |
| env: | |
| GOFLAGS: -mod=vendor | |
| # The tool exits 0 even when it finds dead links (warning-only), so the | |
| # job never fails the weekly run; the report is the signal. | |
| run: | | |
| go run ./tools/testgrid-link-check -report-out "$GITHUB_STEP_SUMMARY" |