Skip to content

add torch-tensorrt-executorch-delegate wheel build #2674

add torch-tensorrt-executorch-delegate wheel build

add torch-tensorrt-executorch-delegate wheel build #2674

name: RTX - 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 TensorRT-RTX (use-rtx: true). 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: true
name-prefix: "RTX - "
# Single rollup status for the RTX matrix; mirror the non-RTX workflow's
# ci-rollup so branch protection can require one check per workflow.
ci-rollup:
name: CI / Linux x86_64 (RTX)
if: ${{ always() }}
permissions: {}
needs: [core]
runs-on: ubuntu-latest
steps:
- name: Aggregate job results
env:
RESULTS: ${{ needs.core.outputs.results }}
# Safety net: fail the rollup if the core call concluded
# failure/cancelled even when its results output came back empty.
CORE_RESULT: ${{ needs.core.result }}
# Surface a label so the markdown summary disambiguates RTX vs standard.
WORKFLOW_LABEL: "Linux x86_64 (RTX)"
run: |
set -euo pipefail
# Same logic as the non-RTX rollup: stdout for the rollup status,
# $GITHUB_STEP_SUMMARY for the reviewer-facing markdown 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"])
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}")
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"
)
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