ci(os-49): draft release runner cutover (#1164)

This commit is contained in:
jtoelke2
2026-05-05 10:18:29 -05:00
committed by GitHub
parent 9efb3464e2
commit e73a4eae53
7 changed files with 44 additions and 39 deletions
+2 -2
View File
@@ -25,12 +25,12 @@ jobs:
matrix:
include:
- arch: amd64
runner: build-amd64
runner: linux-amd64-cpu8
deb_arch: amd64
cli_target: x86_64-unknown-linux-musl
gnu_target: x86_64-unknown-linux-gnu
- arch: arm64
runner: build-arm64
runner: linux-arm64-cpu8
deb_arch: arm64
cli_target: aarch64-unknown-linux-musl
gnu_target: aarch64-unknown-linux-gnu
+3 -3
View File
@@ -24,7 +24,7 @@ defaults:
jobs:
download-kernel-runtime:
name: Download Kernel Runtime
runs-on: build-amd64
runs-on: linux-amd64-cpu8
timeout-minutes: 10
container:
image: ghcr.io/nvidia/openshell/ci:latest
@@ -82,12 +82,12 @@ jobs:
matrix:
include:
- arch: arm64
runner: build-arm64
runner: linux-arm64-cpu8
target: aarch64-unknown-linux-gnu
platform: linux-aarch64
guest_arch: aarch64
- arch: amd64
runner: build-amd64
runner: linux-amd64-cpu8
target: x86_64-unknown-linux-gnu
platform: linux-x86_64
guest_arch: x86_64
+4 -4
View File
@@ -33,9 +33,9 @@ jobs:
matrix:
include:
- arch: amd64
runner: build-amd64
runner: linux-amd64-cpu8
- arch: arm64
runner: build-arm64
runner: linux-arm64-cpu8
runs-on: ${{ matrix.runner }}
timeout-minutes: 10
container:
@@ -81,10 +81,10 @@ jobs:
- two-step
include:
- arch: amd64
runner: build-amd64
runner: linux-amd64-cpu8
target: x86_64-unknown-linux-musl
- arch: arm64
runner: build-arm64
runner: linux-arm64-cpu8
target: aarch64-unknown-linux-musl
runs-on: ${{ matrix.runner }}
timeout-minutes: 30
+15 -15
View File
@@ -19,7 +19,7 @@ jobs:
# ---------------------------------------------------------------------------
compute-versions:
name: Compute Versions
runs-on: build-amd64
runs-on: linux-amd64-cpu8
timeout-minutes: 5
container:
image: ghcr.io/nvidia/openshell/ci:latest
@@ -75,12 +75,12 @@ jobs:
uses: ./.github/workflows/e2e-test.yml
with:
image-tag: ${{ github.sha }}
runner: build-arm64
runner: linux-arm64-cpu8
tag-ghcr-dev:
name: Tag GHCR Images as Dev
needs: [build-gateway, build-supervisor, build-cluster]
runs-on: build-amd64
runs-on: linux-amd64-cpu8
timeout-minutes: 10
steps:
- name: Log in to GHCR
@@ -105,12 +105,12 @@ jobs:
matrix:
include:
- arch: amd64
runner: build-amd64
runner: linux-amd64-cpu8
artifact: linux-amd64
task: python:build:linux:amd64
output_path: target/wheels/linux-amd64/*.whl
- arch: arm64
runner: build-arm64
runner: linux-arm64-cpu8
artifact: linux-arm64
task: python:build:linux:arm64
output_path: target/wheels/linux-arm64/*.whl
@@ -160,7 +160,7 @@ jobs:
build-python-wheel-macos:
name: Build Python Wheel (macOS)
needs: [compute-versions]
runs-on: build-amd64
runs-on: linux-amd64-cpu8
timeout-minutes: 120
container:
image: ghcr.io/nvidia/openshell/ci:latest
@@ -217,11 +217,11 @@ jobs:
matrix:
include:
- arch: amd64
runner: build-amd64
runner: linux-amd64-cpu8
target: x86_64-unknown-linux-musl
zig_target: x86_64-linux-musl
- arch: arm64
runner: build-arm64
runner: linux-arm64-cpu8
target: aarch64-unknown-linux-musl
zig_target: aarch64-linux-musl
runs-on: ${{ matrix.runner }}
@@ -325,7 +325,7 @@ jobs:
build-cli-macos:
name: Build CLI (macOS)
needs: [compute-versions]
runs-on: build-amd64
runs-on: linux-amd64-cpu8
timeout-minutes: 60
container:
image: ghcr.io/nvidia/openshell/ci:latest
@@ -392,10 +392,10 @@ jobs:
matrix:
include:
- arch: amd64
runner: build-amd64
runner: linux-amd64-cpu8
target: x86_64-unknown-linux-gnu
- arch: arm64
runner: build-arm64
runner: linux-arm64-cpu8
target: aarch64-unknown-linux-gnu
runs-on: ${{ matrix.runner }}
timeout-minutes: 60
@@ -472,7 +472,7 @@ jobs:
build-gateway-binary-macos:
name: Build Gateway Binary (macOS)
needs: [compute-versions]
runs-on: build-amd64
runs-on: linux-amd64-cpu8
timeout-minutes: 60
container:
image: ghcr.io/nvidia/openshell/ci:latest
@@ -543,10 +543,10 @@ jobs:
matrix:
include:
- arch: amd64
runner: build-amd64
runner: linux-amd64-cpu8
target: x86_64-unknown-linux-gnu
- arch: arm64
runner: build-arm64
runner: linux-arm64-cpu8
target: aarch64-unknown-linux-gnu
runs-on: ${{ matrix.runner }}
timeout-minutes: 60
@@ -642,7 +642,7 @@ jobs:
release-dev:
name: Release Dev
needs: [compute-versions, build-cli-linux, build-cli-macos, build-gateway-binary-linux, build-gateway-binary-macos, build-supervisor-binary-linux, build-python-wheels-linux, build-python-wheel-macos, build-deb]
runs-on: build-amd64
runs-on: linux-amd64-cpu8
timeout-minutes: 10
outputs:
wheel_filenames: ${{ steps.wheel_filenames.outputs.wheel_filenames }}
+15 -15
View File
@@ -30,7 +30,7 @@ jobs:
# ---------------------------------------------------------------------------
compute-versions:
name: Compute Versions
runs-on: build-amd64
runs-on: linux-amd64-cpu8
timeout-minutes: 5
container:
image: ghcr.io/nvidia/openshell/ci:latest
@@ -90,12 +90,12 @@ jobs:
uses: ./.github/workflows/e2e-test.yml
with:
image-tag: ${{ github.sha }}
runner: build-arm64
runner: linux-arm64-cpu8
tag-ghcr-release:
name: Tag GHCR Images for Release
needs: [compute-versions, build-gateway, build-supervisor, build-cluster, e2e]
runs-on: build-amd64
runs-on: linux-amd64-cpu8
timeout-minutes: 10
steps:
- name: Log in to GHCR
@@ -125,12 +125,12 @@ jobs:
matrix:
include:
- arch: amd64
runner: build-amd64
runner: linux-amd64-cpu8
artifact: linux-amd64
task: python:build:linux:amd64
output_path: target/wheels/linux-amd64/*.whl
- arch: arm64
runner: build-arm64
runner: linux-arm64-cpu8
artifact: linux-arm64
task: python:build:linux:arm64
output_path: target/wheels/linux-arm64/*.whl
@@ -181,7 +181,7 @@ jobs:
build-python-wheel-macos:
name: Build Python Wheel (macOS)
needs: [compute-versions]
runs-on: build-amd64
runs-on: linux-amd64-cpu8
timeout-minutes: 120
container:
image: ghcr.io/nvidia/openshell/ci:latest
@@ -239,11 +239,11 @@ jobs:
matrix:
include:
- arch: amd64
runner: build-amd64
runner: linux-amd64-cpu8
target: x86_64-unknown-linux-musl
zig_target: x86_64-linux-musl
- arch: arm64
runner: build-arm64
runner: linux-arm64-cpu8
target: aarch64-unknown-linux-musl
zig_target: aarch64-linux-musl
runs-on: ${{ matrix.runner }}
@@ -348,7 +348,7 @@ jobs:
build-cli-macos:
name: Build CLI (macOS)
needs: [compute-versions]
runs-on: build-amd64
runs-on: linux-amd64-cpu8
timeout-minutes: 60
container:
image: ghcr.io/nvidia/openshell/ci:latest
@@ -416,10 +416,10 @@ jobs:
matrix:
include:
- arch: amd64
runner: build-amd64
runner: linux-amd64-cpu8
target: x86_64-unknown-linux-gnu
- arch: arm64
runner: build-arm64
runner: linux-arm64-cpu8
target: aarch64-unknown-linux-gnu
runs-on: ${{ matrix.runner }}
timeout-minutes: 60
@@ -501,10 +501,10 @@ jobs:
matrix:
include:
- arch: amd64
runner: build-amd64
runner: linux-amd64-cpu8
target: x86_64-unknown-linux-gnu
- arch: arm64
runner: build-arm64
runner: linux-arm64-cpu8
target: aarch64-unknown-linux-gnu
runs-on: ${{ matrix.runner }}
timeout-minutes: 60
@@ -582,7 +582,7 @@ jobs:
build-gateway-binary-macos:
name: Build Gateway Binary (macOS)
needs: [compute-versions]
runs-on: build-amd64
runs-on: linux-amd64-cpu8
timeout-minutes: 60
container:
image: ghcr.io/nvidia/openshell/ci:latest
@@ -669,7 +669,7 @@ jobs:
release:
name: Release
needs: [compute-versions, build-cli-linux, build-cli-macos, build-gateway-binary-linux, build-gateway-binary-macos, build-supervisor-binary-linux, build-python-wheels-linux, build-python-wheel-macos, tag-ghcr-release, build-deb]
runs-on: build-amd64
runs-on: linux-amd64-cpu8
timeout-minutes: 10
outputs:
wheel_filenames: ${{ steps.wheel_filenames.outputs.wheel_filenames }}
+1
View File
@@ -64,6 +64,7 @@ OpenShell also publishes Python wheels for `linux/amd64`, `linux/arm64`, and mac
- There is no local Linux multiarch wheel build task. Release workflows own the per-arch Linux wheel production.
- The macOS ARM64 wheel is cross-compiled with `deploy/docker/Dockerfile.python-wheels-macos` via `build:python:wheel:macos`.
- Release workflows mirror the CLI layout: a Linux matrix job for amd64/arm64, a separate macOS job, and release jobs that download the per-platform wheel artifacts directly before publishing.
- Release CPU jobs run on `linux-amd64-cpu8` and `linux-arm64-cpu8`; the macOS wheel is still cross-compiled in Docker from the amd64 Linux runner.
## Sandbox Images
+4
View File
@@ -32,6 +32,8 @@ OS-49 Phase 5 added non-required shadow workflows for the non-release workflows
`branch-checks.yml` uses `pr-gate` without a required label. That still verifies the mirror SHA matches the source PR head SHA, but does not require a new GitHub label for ordinary required checks. `branch-e2e.yml` keeps the existing `test:e2e` gate because it publishes temporary images and runs the expensive E2E suite. `ci-image.yml` now builds amd64 and arm64 CI images natively on shared CPU runners and merges the multi-arch manifest after both per-arch images are pushed.
OS-49 Phase 7 moves the release-facing CPU jobs in `release-canary.yml`, `release-dev.yml`, and `release-tag.yml` to the same shared CPU labels. The release workflows also call `driver-vm-linux.yml` and `deb-package.yml`, so those reusable workers use the same labels to avoid retaining a hidden ARC dependency in the release path. `release-vm-dev.yml` and `release-vm-kernel.yml` remain on the old labels until the VM runtime decision is recorded for OS-131.
## Trigger taxonomy
Five GitHub Actions trigger types appear in this flow. Each one was chosen for a specific reason - they are not interchangeable.
@@ -170,6 +172,8 @@ Only one workflow holds an "interesting" token: `rerun-on-completion` in `e2e-ga
`release-tag.yml` and `release-dev.yml` call `e2e-test.yml` directly on `main` / tag pushes. Tags and `main` are inherently trusted refs, so they bypass copy-pr-bot. E2E still blocks the release jobs (`tag-ghcr-release: needs: [..., e2e]`).
The release CPU jobs run on `linux-amd64-cpu8` and `linux-arm64-cpu8`. GitHub-hosted docs publishing and the external wheel-publish bridge keep their existing runners. VM development release workflows are tracked separately because the managed platform capability decision is still open.
Permissions on the release workflows are not yet scoped per-job. Tracked separately.
## Edge cases