mirror of
https://github.com/elder-plinius/OBLITERATUS.git
synced 2026-08-30 14:40:38 +02:00
feat: add Jetson contributor validation path
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
name: Jetson runtime report
|
||||
description: Report a physical Jetson bootstrap, build, or CUDA validation result
|
||||
title: "[Jetson] "
|
||||
labels:
|
||||
- enhancement
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thank you for testing OBLITERATUS on physical Jetson hardware. Run the
|
||||
documented `jetson-runtime` probe and attach its sanitized report. The
|
||||
report intentionally omits host identity, network, serial, token, and
|
||||
local-path data.
|
||||
- type: dropdown
|
||||
id: device
|
||||
attributes:
|
||||
label: Jetson device
|
||||
options:
|
||||
- Jetson AGX Orin
|
||||
- Jetson Orin NX
|
||||
- Jetson Orin Nano
|
||||
- Jetson AGX Xavier
|
||||
- Jetson AGX Thor
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: jetpack
|
||||
attributes:
|
||||
label: Exact JetPack version
|
||||
description: Include the patch version, for example 6.2.1.
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: commit
|
||||
attributes:
|
||||
label: Exact OBLITERATUS commit
|
||||
description: Paste the 40-character commit SHA that was tested.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: reproduction
|
||||
attributes:
|
||||
label: Reproduction commands
|
||||
description: Provide the smallest command sequence that demonstrates the result.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: expected
|
||||
attributes:
|
||||
label: Expected result
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: actual
|
||||
attributes:
|
||||
label: Actual result
|
||||
description: Include the complete error text, but remove any secrets before submitting.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: evidence
|
||||
attributes:
|
||||
label: Sanitized Jetson evidence
|
||||
description: Attach conditional-evidence/jetson-report.json or paste its JSON contents.
|
||||
validations:
|
||||
required: true
|
||||
- type: checkboxes
|
||||
id: confirmations
|
||||
attributes:
|
||||
label: Confirmations
|
||||
options:
|
||||
- label: I ran this validation on physical Jetson hardware.
|
||||
required: true
|
||||
- label: I reviewed the report and removed any secrets or personal identifiers.
|
||||
required: true
|
||||
validations:
|
||||
required: true
|
||||
@@ -1,6 +1,6 @@
|
||||
self-hosted-runner:
|
||||
# Project-owned capability labels used by conditional test runners.
|
||||
labels: [cuda, mps, mlx]
|
||||
labels: [cuda, jetson, mps, mlx]
|
||||
|
||||
# Configuration variables in array of strings defined in your repository or
|
||||
# organization. `null` means disabling configuration variables check.
|
||||
|
||||
@@ -225,6 +225,45 @@ jobs:
|
||||
scripts/check_supply_chain_policy.py
|
||||
scripts/gemma4_12b_recursive_loop.py || true
|
||||
|
||||
arm64-preflight:
|
||||
name: Linux ARM64 preflight
|
||||
if: github.event_name == 'pull_request' || (github.event_name == 'push' && github.ref == 'refs/heads/main')
|
||||
runs-on: ubuntu-24.04-arm
|
||||
timeout-minutes: 10
|
||||
env:
|
||||
CUDA_VISIBLE_DEVICES: ""
|
||||
HF_DATASETS_OFFLINE: "1"
|
||||
HF_HUB_DISABLE_TELEMETRY: "1"
|
||||
HF_HUB_OFFLINE: "1"
|
||||
TRANSFORMERS_OFFLINE: "1"
|
||||
TEST_ENV: /tmp/obliteratus-arm64-preflight
|
||||
steps:
|
||||
- name: Check out repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
||||
with:
|
||||
python-version: "3.12"
|
||||
cache: pip
|
||||
cache-dependency-path: |
|
||||
pyproject.toml
|
||||
uv.lock
|
||||
- name: Install locked CPU runtime
|
||||
run: |
|
||||
python -m pip install "uv==${UV_VERSION}"
|
||||
UV_PROJECT_ENVIRONMENT="$TEST_ENV" \
|
||||
uv sync --locked --no-default-groups --extra dev --no-editable
|
||||
- name: Verify ARM64 package and core runtime
|
||||
run: |
|
||||
"$TEST_ENV/bin/python" -c \
|
||||
'import platform; assert platform.machine().lower() in {"aarch64", "arm64"}'
|
||||
"$TEST_ENV/bin/python" -m build --wheel
|
||||
"$TEST_ENV/bin/python" -c 'import obliteratus; print(obliteratus.__version__)'
|
||||
"$TEST_ENV/bin/python" -m obliteratus --help
|
||||
"$TEST_ENV/bin/python" -m pytest \
|
||||
tests/test_module_imports.py tests/test_device_boundaries.py \
|
||||
tests/test_jetson_support_tooling.py -q --no-cov
|
||||
|
||||
pr-core:
|
||||
name: Pull request core
|
||||
if: github.event_name == 'pull_request' || (github.event_name == 'push' && github.ref == 'refs/heads/main')
|
||||
|
||||
@@ -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') }}}
|
||||
|
||||
Reference in New Issue
Block a user