Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/deb-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/driver-vm-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/release-canary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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
Expand Down
30 changes: 15 additions & 15 deletions .github/workflows/release-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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 }}
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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 }}
Expand Down
30 changes: 15 additions & 15 deletions .github/workflows/release-tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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 }}
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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 }}
Expand Down
1 change: 1 addition & 0 deletions architecture/build-containers.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,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

Expand Down
4 changes: 4 additions & 0 deletions architecture/ci-e2e.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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
Expand Down
Loading