2026-07-12 nightly release (2aac435dff5ef0e80f3b03a43415067ea082d416) #3663
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
| name: Build and test Linux x86_64 wheels | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - main | |
| - nightly | |
| - release/* | |
| tags: | |
| # NOTE: Binary build pipelines should only get triggered on release candidate builds | |
| # Release candidate tags look like: v1.11.0-rc1 | |
| - v[0-9]+.[0-9]+.[0-9]+-rc[0-9]+ | |
| workflow_dispatch: | |
| jobs: | |
| # All build/test logic lives in the shared reusable core; this workflow | |
| # just selects standard TensorRT (use-rtx: false). See | |
| # .github/workflows/_linux-x86_64-core.yml. | |
| core: | |
| permissions: | |
| id-token: write | |
| contents: read | |
| uses: ./.github/workflows/_linux-x86_64-core.yml | |
| with: | |
| use-rtx: false | |
| # Single rollup status that summarises every build/test job. Mark this one | |
| # as the required check in branch protection — reviewers see a single | |
| # ✅/❌ instead of 50 matrix entries. Click-through still surfaces the | |
| # individual job logs. | |
| # | |
| # ``if: always()`` makes the rollup run even if the core jobs failed, | |
| # were skipped, or were cancelled (so we always render a check). The body | |
| # fails the rollup iff any build/test job ended in 'failure'; 'skipped' | |
| # (label-gated) and 'success' both count as healthy. | |
| ci-rollup: | |
| name: CI / Linux x86_64 | |
| if: ${{ always() }} | |
| permissions: {} | |
| needs: [core] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Aggregate job results | |
| env: | |
| RESULTS: ${{ needs.core.outputs.results }} | |
| # Safety net: if the core reusable call concluded | |
| # failure/cancelled but its results output came back empty | |
| # (a known edge case), still fail the rollup rather than | |
| # silently reporting green. | |
| CORE_RESULT: ${{ needs.core.result }} | |
| WORKFLOW_LABEL: "Linux x86_64" | |
| run: | | |
| set -euo pipefail | |
| # Emit two surfaces: | |
| # * stdout / job exit code → drives the green/red rollup | |
| # status that branch protection keys on. | |
| # * $GITHUB_STEP_SUMMARY → the markdown that renders | |
| # on the workflow run page, with a per-job result table. | |
| python3 - <<'PY' | |
| import json, os, sys | |
| raw = os.environ.get("RESULTS") or "{}" | |
| core_result = os.environ.get("CORE_RESULT", "") | |
| try: | |
| needs = json.loads(raw) | |
| except json.JSONDecodeError: | |
| needs = {} | |
| label = os.environ.get("WORKFLOW_LABEL", "Linux x86_64") | |
| by_result = {"success": [], "failure": [], "skipped": [], "cancelled": []} | |
| for name, info in needs.items(): | |
| by_result.setdefault(info.get("result") or "unknown", []).append(name) | |
| failed = sorted(by_result["failure"]) | |
| passed = sorted(by_result["success"]) | |
| skipped = sorted(by_result["skipped"]) | |
| cancelled = sorted(by_result["cancelled"]) | |
| # --- stdout: short pass/fail summary for the log tab --- | |
| print(f"PASS: {len(passed)}") | |
| print(f"FAIL: {len(failed)}") | |
| print(f"SKIPPED: {len(skipped)} (label-gated or never started)") | |
| print(f"CANCELLED: {len(cancelled)}") | |
| if failed: | |
| print() | |
| print("Failed jobs:") | |
| for name in failed: | |
| print(f" - {name}") | |
| # --- step summary: markdown table for reviewers --- | |
| summary_path = os.environ.get("GITHUB_STEP_SUMMARY") | |
| if summary_path: | |
| icon = {"success": "✅", "failure": "❌", "skipped": "⏭️", "cancelled": "🚫"} | |
| with open(summary_path, "a", encoding="utf-8") as f: | |
| f.write(f"# CI / {label} — rollup\n\n") | |
| f.write( | |
| f"**{len(passed)}** passed · " | |
| f"**{len(failed)}** failed · " | |
| f"**{len(skipped)}** skipped · " | |
| f"**{len(cancelled)}** cancelled\n\n" | |
| ) | |
| f.write("| Result | Job |\n|---|---|\n") | |
| for status in ("failure", "cancelled", "skipped", "success"): | |
| for name in sorted(by_result.get(status, [])): | |
| f.write(f"| {icon.get(status, '?')} {status} | `{name}` |\n") | |
| if failed: | |
| f.write( | |
| "\n> Click into a failed job above to see " | |
| "the rendered test table (via `pytest-results-action`) " | |
| "and the `::warning::Reproduce locally with: ...` hint " | |
| "near the bottom of the log.\n" | |
| ) | |
| # Fail if any job failed, OR the core call did not succeed | |
| # (covers an empty/missing results payload). | |
| if failed or core_result not in ("success", "skipped", ""): | |
| if core_result not in ("success", "skipped", "") and not failed: | |
| print(f"\nCore reusable workflow concluded '{core_result}' " | |
| f"with no per-job results; failing rollup defensively.") | |
| sys.exit(1) | |
| PY | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref_name }}-${{ github.event_name == 'workflow_dispatch' }} | |
| cancel-in-progress: true |