feat: add Jetson contributor validation path

This commit is contained in:
Joseph Magly
2026-08-21 20:12:35 -04:00
parent 1e870ccee0
commit 06e80af7b6
23 changed files with 1128 additions and 30 deletions
+55 -3
View File
@@ -23,6 +23,10 @@ on:
description: Run CUDA and bitsandbytes on the labeled self-hosted runner
type: boolean
default: false
run_jetson:
description: Run Jetson CUDA on the trusted labeled physical runner
type: boolean
default: false
run_mps:
description: Run MPS on the labeled Apple Silicon runner
type: boolean
@@ -239,7 +243,7 @@ jobs:
run: |
python -m pip install "uv==${UV_VERSION}"
UV_PROJECT_ENVIRONMENT="$CONDITIONAL_ENV" \
uv sync --locked --no-default-groups --extra dev --no-editable
uv sync --locked --no-default-groups --extra dev --extra quantization --no-editable
CUDA_TORCH_VERSION="$("$CONDITIONAL_ENV/bin/python" -c \
'import torch; print(torch.__version__.split("+", 1)[0])')"
UV_TORCH_BACKEND=cu130 uv pip install \
@@ -264,6 +268,52 @@ jobs:
if-no-files-found: error
retention-days: 30
jetson:
name: NVIDIA Jetson runtime
needs: policy
if: github.event_name == 'workflow_dispatch' && inputs.run_jetson
runs-on: [self-hosted, linux, ARM64, jetson]
timeout-minutes: 45
env:
JETSON_ENV: /tmp/obliteratus-jetson-${{ github.run_id }}-${{ github.run_attempt }}
JETSON_TOOLS: /tmp/obliteratus-jetson-tools-${{ github.run_id }}-${{ github.run_attempt }}
steps:
- name: Check out trusted candidate
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install pinned bootstrap tooling outside the JetPack runtime
run: |
python3 -m venv "$JETSON_TOOLS"
"$JETSON_TOOLS/bin/python" -m pip install "uv==${UV_VERSION}"
- name: Preserve JetPack PyTorch and install OBLITERATUS
run: >-
python3 scripts/setup_jetson.py
--python python3
--uv-python "$JETSON_TOOLS/bin/python"
--venv "$JETSON_ENV"
- name: Run physical Jetson CUDA probe
run: >-
"$JETSON_ENV/bin/python" scripts/run_conditional_gate.py jetson-runtime
- name: Collect sanitized Jetson evidence
if: always()
run: |
JETSON_PYTHON=python3
if [ -x "$JETSON_ENV/bin/python" ]; then
JETSON_PYTHON="$JETSON_ENV/bin/python"
fi
"$JETSON_PYTHON" scripts/jetson_support.py \
--check \
--gate-evidence conditional-evidence/jetson-runtime.json \
--output conditional-evidence/jetson-report.json \
--issue-body conditional-evidence/jetson-issue.md
- name: Upload Jetson evidence
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: conditional-jetson-${{ github.run_attempt }}
path: conditional-evidence/
if-no-files-found: error
retention-days: 30
mps:
name: Apple MPS runtime
needs: policy
@@ -393,20 +443,22 @@ jobs:
summary:
name: Conditional result and freshness summary
if: always()
needs: [policy, model_runtime, network_services, operator_ui, cuda, mps, mlx, remote]
needs: [policy, model_runtime, network_services, operator_ui, cuda, jetson, mps, mlx, remote]
runs-on: ubuntu-latest
timeout-minutes: 5
env:
CONDITIONAL_RESULTS: >-
{"policy":"${{ needs.policy.result }}","model_runtime":"${{ needs.model_runtime.result }}",
"network_services":"${{ needs.network_services.result }}","operator_ui":"${{ needs.operator_ui.result }}",
"cuda":"${{ needs.cuda.result }}","mps":"${{ needs.mps.result }}","mlx":"${{ needs.mlx.result }}",
"cuda":"${{ needs.cuda.result }}","jetson":"${{ needs.jetson.result }}",
"mps":"${{ needs.mps.result }}","mlx":"${{ needs.mlx.result }}",
"remote":"${{ needs.remote.result }}"}
CONDITIONAL_SELECTED: >-
{"model_runtime":${{ github.event_name != 'workflow_dispatch' || inputs.run_model }},
"network_services":${{ github.event_name != 'workflow_dispatch' || inputs.run_network }},
"operator_ui":${{ github.event_name != 'workflow_dispatch' || inputs.run_ui }},
"cuda":${{ (github.event_name == 'workflow_dispatch' && inputs.run_cuda) || (github.event_name != 'workflow_dispatch' && vars.ENABLE_CUDA_GATE == 'true') }},
"jetson":${{ github.event_name == 'workflow_dispatch' && inputs.run_jetson }},
"mps":${{ (github.event_name == 'workflow_dispatch' && inputs.run_mps) || (github.event_name != 'workflow_dispatch' && vars.ENABLE_MPS_GATE == 'true') }},
"mlx":${{ (github.event_name == 'workflow_dispatch' && inputs.run_mlx) || (github.event_name != 'workflow_dispatch' && vars.ENABLE_MLX_GATE == 'true') }},
"remote":${{ (github.event_name == 'workflow_dispatch' && inputs.run_remote) || (github.event_name != 'workflow_dispatch' && vars.ENABLE_REMOTE_GATE == 'true') }}}