Skip to content

2026-07-12 nightly release (2aac435dff5ef0e80f3b03a43415067ea082d416) #3663

2026-07-12 nightly release (2aac435dff5ef0e80f3b03a43415067ea082d416)

2026-07-12 nightly release (2aac435dff5ef0e80f3b03a43415067ea082d416) #3663

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