Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
27fe09e
feat(isolation): add RFC 0012 backend contract
drew Aug 26, 2026
f8173e9
refactor(isolation): name the interface crate explicitly
drew Sep 1, 2026
38dc5f9
feat(isolation): expose trusted host gateway
drew Sep 1, 2026
f098913
docs(agents): inventory the MXC driver
drew Sep 1, 2026
10deecc
feat(isolation): add mediated DNS transport
drew Sep 1, 2026
175dc82
fix(isolation): tighten interface error and digest contracts
drew Sep 3, 2026
06a3a8a
docs(isolation): remove unrelated driver inventory
drew Sep 3, 2026
f72ec9e
feat(isolation): define capability-free launch contract
drew Sep 4, 2026
b24b847
fix(isolation): seal confirmed boundary state
drew Sep 5, 2026
de5aff2
fix(isolation): validate confirmation for external backend implementa…
drew Sep 8, 2026
8e485ac
fix(isolation): clarify mediated DNS identity
drew Sep 9, 2026
6123572
refactor(isolation): generalize loopback connector
drew Sep 9, 2026
406200d
refactor(isolation): unify typed network mediation
drew Sep 10, 2026
cc95700
feat(isolation): bind launches to sandbox sessions
drew Sep 11, 2026
14c0249
fix(mxc): initialize extended sandbox status
drew Sep 11, 2026
64ee429
feat(isolation): add boundary protocol and Linux primitives
drew Sep 8, 2026
d741dcc
fix(isolation): harden signals and separate process status from trans…
drew Sep 8, 2026
49ac1be
fix(isolation): validate remote confirmation through public contract
drew Sep 9, 2026
95833ca
fix(isolation): validate wire state and propagate snapshot failures
drew Sep 9, 2026
5c85427
test(isolation): import owned agent specification explicitly
drew Sep 9, 2026
5c5057f
docs(isolation): describe mediated DNS channel
drew Sep 9, 2026
48659ee
fix(isolation): bound mediation attach without nested retries
drew Sep 9, 2026
ff45e45
refactor(isolation): generalize loopback protocol
drew Sep 9, 2026
c72daa9
feat(isolation): add transport-neutral session authentication
drew Sep 11, 2026
9d0038f
refactor(isolation): separate sandbox backend protocol
drew Sep 11, 2026
1f20080
fix(isolation): harden runtime boundary controls
drew Sep 11, 2026
d69352f
feat(isolation): add terminal boundary operation
drew Sep 11, 2026
807f813
feat(isolation): split supervisor and sandbox runtimes
drew Sep 8, 2026
d597aa1
fix(sandbox): harden boundary isolation and lifecycle ownership
drew Sep 8, 2026
31f5a73
fix(sandbox): reject private root redirects and adopt typed errors
drew Sep 9, 2026
d3b921e
fix(sandbox): preserve accept thread ownership on musl
drew Sep 9, 2026
2b26edc
test(sandbox): isolate credential probes from filtered threads
drew Sep 9, 2026
fe6aad8
fix(sandbox): return retained exec exit status to independent waiters
drew Sep 9, 2026
7ec8eff
fix(sandbox): bound network mediation and preserve socket authorization
drew Sep 9, 2026
f59d403
fix(sandbox): bound control admission and retire stale mediation
drew Sep 9, 2026
e184f37
ci(e2e): select migrated drivers per stack layer
drew Sep 9, 2026
c4a0eff
refactor(sandbox): implement loopback connector
drew Sep 9, 2026
56a7f2a
feat(isolation): authenticate the Sandbox Protocol
drew Sep 11, 2026
6a3d4a3
feat(supervisor): rotate launch-scoped authentication
drew Sep 11, 2026
280cdef
refactor(sandbox): consume dedicated backend crate
drew Sep 11, 2026
bf42b59
test(sandbox): align topology session fixture
drew Sep 11, 2026
46fc310
fix(sandbox): align projected bootstrap bundle
drew Sep 11, 2026
31141e0
fix(auth): validate refreshed credentials before rotation
drew Sep 11, 2026
8189cf4
fix(sandbox): fail closed across supervisor disconnects
drew Sep 11, 2026
2e25ae8
fix(isolation): repair rebased sandbox CI
drew Sep 11, 2026
97f26ac
build(runtime): publish separate sandbox and supervisor images
drew Sep 11, 2026
9b00cb6
feat(config): configure the sandbox runtime image
drew Sep 11, 2026
0744154
fix(ci): validate sandbox binary linkage
drew Sep 11, 2026
d3d92a7
refactor(isolation): use backend and runtime terminology
drew Sep 12, 2026
bda6fff
refactor(sandbox): use a scratch runtime image
drew Sep 12, 2026
48f1083
fix(ci): refresh schema and dependency policy
drew Sep 12, 2026
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
2 changes: 1 addition & 1 deletion .agents/skills/sbom/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ The OpenShell SBOM tooling produces source-tree CycloneDX JSON SBOMs using Syft,

SBOMs are **release artifacts only** -- they are generated on demand and not committed to the repository. Output lands in `deploy/sbom/output/` (gitignored).

Pushed gateway and supervisor images carry an SPDX SBOM and minimal SLSA provenance as OCI attestations. Branch E2E, Release Dev, and Release Tag image binaries embed cargo-auditable metadata, so their image SBOMs include linked Rust crates.
Pushed gateway, sandbox, and supervisor images carry an SPDX SBOM and minimal SLSA provenance as OCI attestations. Branch E2E, Release Dev, and Release Tag image binaries embed cargo-auditable metadata, so their image SBOMs include linked Rust crates.

## Prerequisites

Expand Down
2 changes: 1 addition & 1 deletion .agents/skills/test-release-canary/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ Note `install.sh` is pulled from `raw.githubusercontent.com/NVIDIA/OpenShell/${h
`Release Dev` publishes two chart versions for every dev build (see `.github/actions/release-helm-oci/action.yml:89-102`):

- `oci://ghcr.io/nvidia/openshell/helm-chart:0.0.0-dev` — floating, overwritten on every main push.
- `oci://ghcr.io/nvidia/openshell/helm-chart:0.0.0-dev.<sha>` — immutable, `appVersion` set to the same SHA so it pulls `ghcr.io/nvidia/openshell/gateway:<sha>` and `:supervisor:<sha>`.
- `oci://ghcr.io/nvidia/openshell/helm-chart:0.0.0-dev.<sha>` — immutable, `appVersion` set to the same SHA so it pulls the matching `gateway`, `sandbox`, and `supervisor` images.

To smoke-test the chart for a specific dev build, dispatch `Release Dev` on the branch first, then run the kind canary steps locally pointed at the SHA-pinned chart (see "Local kind reproduction" below). The release-canary workflow itself does not currently expose `chart_version` / `image_tag` inputs.

Expand Down
21 changes: 19 additions & 2 deletions .github/actions/build-rust-binary/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ inputs:
description: Additional flags passed to cargo build
required: false
default: ""
interpreter:
description: Expected ELF program interpreter, "none" for static, or "skip"
required: false
default: skip

runs:
using: composite
Expand Down Expand Up @@ -71,11 +75,24 @@ runs:
env:
INPUTS_BINARY: ${{ inputs.binary }}
INPUTS_TRIPLE: ${{ inputs.triple }}
INPUTS_INTERPRETER: ${{ inputs.interpreter }}
run: |
binary="target/${INPUTS_TRIPLE}/release/${INPUTS_BINARY}"
# Confirm the binary runs and reports the expected name.
target/${INPUTS_TRIPLE}/release/${INPUTS_BINARY} --version | grep -q "^${INPUTS_BINARY} "
"$binary" --version | grep -q "^${INPUTS_BINARY} "
# Confirm Syft can decode the embedded cargo-auditable metadata.
SYFT_CHECK_FOR_APP_UPDATE=false syft file:target/${INPUTS_TRIPLE}/release/${INPUTS_BINARY} -o cyclonedx-json | grep 'pkg:cargo/' > /dev/null
SYFT_CHECK_FOR_APP_UPDATE=false syft "file:${binary}" -o cyclonedx-json | grep 'pkg:cargo/' > /dev/null
if [ "$INPUTS_INTERPRETER" != skip ]; then
actual_interpreter="$(readelf -l "$binary" | sed -n 's/.*Requesting program interpreter: \(.*\)]/\1/p')"
expected_interpreter="$INPUTS_INTERPRETER"
if [ "$expected_interpreter" = none ]; then
expected_interpreter=""
fi
if [ "$actual_interpreter" != "$expected_interpreter" ]; then
echo "error: expected interpreter '${expected_interpreter:-<none>}', got '${actual_interpreter:-<none>}'" >&2
exit 1
fi
fi

- name: Upload ${{ inputs.binary }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
Expand Down
14 changes: 13 additions & 1 deletion .github/actions/check-job-results/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ inputs:
results:
description: JSON-encoded GitHub Actions needs context
required: true
allowed-skipped-jobs:
description: Comma-separated job IDs that may be skipped but must not fail
required: false
default: ""

runs:
using: composite
Expand All @@ -16,12 +20,20 @@ runs:
shell: bash
env:
JOB_RESULTS: ${{ inputs.results }}
ALLOWED_SKIPPED_JOBS: ${{ inputs.allowed-skipped-jobs }}
run: |
set -euo pipefail
failures="$(
jq -r '
jq -r --arg allowed_skipped "$ALLOWED_SKIPPED_JOBS" '
($allowed_skipped | split(",") | map(select(length > 0))) as $allowed_skipped_jobs
|
to_entries[]
| . as $job
| select(.value.result != "success")
| select(
.value.result != "skipped"
or ($allowed_skipped_jobs | index($job.key)) == null
)
| "\(.key) concluded \(.value.result)"
' <<< "$JOB_RESULTS"
)"
Expand Down
4 changes: 2 additions & 2 deletions .github/actions/setup-e2e-kind/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ inputs:
images:
description: Space-separated OpenShell image components to load
required: false
default: gateway supervisor
default: gateway sandbox supervisor
registry:
description: Container registry and namespace
required: false
Expand Down Expand Up @@ -71,7 +71,7 @@ runs:
set -euo pipefail
for component in $IMAGE_COMPONENTS; do
case "$component" in
gateway | supervisor) ;;
gateway | sandbox | supervisor) ;;
*) echo "ERROR: unsupported OpenShell image component: $component" >&2; exit 1 ;;
esac
image="${REGISTRY}/${component}:${IMAGE_TAG}"
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/branch-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -179,8 +179,8 @@ jobs:
tasks/scripts/verify-telemetry-compiled-out.sh present target/debug/openshell-gateway
cargo build -p openshell-gateway --bin openshell-gateway --no-default-features --features defaults-without-telemetry
tasks/scripts/verify-telemetry-compiled-out.sh absent target/debug/openshell-gateway
cargo build -p openshell-sandbox --bin openshell-sandbox --no-default-features --features defaults-without-telemetry
tasks/scripts/verify-telemetry-compiled-out.sh absent target/debug/openshell-sandbox
cargo build -p openshell-supervisor --bin openshell-supervisor --no-default-features --features defaults-without-telemetry
tasks/scripts/verify-telemetry-compiled-out.sh absent target/debug/openshell-supervisor

- name: Verify selective gateway compute-driver builds
run: |
Expand All @@ -197,12 +197,12 @@ jobs:

- name: Verify system CA roots build mode compiles and excludes bundled Mozilla roots
run: |
cargo check -p openshell-sandbox --all-targets --no-default-features --features system-ca-roots
if cargo tree -p openshell-sandbox -i webpki-roots --no-default-features --features system-ca-roots 2>/dev/null | grep -q webpki-roots; then
cargo check -p openshell-supervisor --all-targets --no-default-features --features system-ca-roots
if cargo tree -p openshell-supervisor -i webpki-roots --no-default-features --features system-ca-roots 2>/dev/null | grep -q webpki-roots; then
echo "ERROR: webpki-roots found in system CA roots build" >&2
exit 1
fi
if cargo tree -p openshell-sandbox -i webpki-root-certs --no-default-features --features system-ca-roots 2>/dev/null | grep -q webpki-root-certs; then
if cargo tree -p openshell-supervisor -i webpki-root-certs --no-default-features --features system-ca-roots 2>/dev/null | grep -q webpki-root-certs; then
echo "ERROR: webpki-root-certs found in system CA roots build" >&2
exit 1
fi
Expand Down
99 changes: 76 additions & 23 deletions .github/workflows/branch-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ jobs:
run_kubernetes_ha_e2e: ${{ steps.labels.outputs.run_kubernetes_ha_e2e }}
run_kubernetes_credential_drivers_e2e: ${{ steps.labels.outputs.run_kubernetes_credential_drivers_e2e }}
run_any_e2e: ${{ steps.labels.outputs.run_any_e2e }}
run_docker_e2e: ${{ steps.labels.outputs.run_docker_e2e }}
run_podman_e2e: ${{ steps.labels.outputs.run_podman_e2e }}
run_vm_e2e: ${{ steps.labels.outputs.run_vm_e2e }}
run_kubernetes_e2e: ${{ steps.labels.outputs.run_kubernetes_e2e }}
allowed_skipped_core_jobs: ${{ steps.labels.outputs.allowed_skipped_core_jobs }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- id: gate
Expand Down Expand Up @@ -68,12 +73,46 @@ jobs:
else
run_any_e2e=false
fi

run_docker_e2e="$run_core_e2e"
run_podman_e2e="$run_core_e2e"
run_vm_e2e="$run_core_e2e"
run_kubernetes_e2e="$run_core_e2e"
allowed_skipped_core_jobs=""

# The RFC 0012 stack deliberately introduces the split runtime before
# migrating each driver. At those intermediate layers, run only the
# drivers whose isolation adapter is present. Before and after the
# stack this resolves to the complete legacy or migrated driver set.
if [ "$run_core_e2e" = "true" ] && [ -f crates/openshell-supervisor/Cargo.toml ]; then
if [ ! -f crates/openshell-driver-docker/src/isolation.rs ]; then
run_docker_e2e=false
allowed_skipped_core_jobs="docker-e2e,docker-external-driver-e2e"
fi
if [ ! -f crates/openshell-driver-podman/src/isolation.rs ]; then
run_podman_e2e=false
allowed_skipped_core_jobs="${allowed_skipped_core_jobs:+$allowed_skipped_core_jobs,}podman-e2e,podman-external-driver-e2e"
fi
if [ ! -f crates/openshell-driver-vm/src/isolation/mod.rs ]; then
run_vm_e2e=false
allowed_skipped_core_jobs="${allowed_skipped_core_jobs:+$allowed_skipped_core_jobs,}vm-e2e,vm-external-driver-e2e"
fi
if [ ! -f crates/openshell-driver-kubernetes/src/isolation.rs ]; then
run_kubernetes_e2e=false
allowed_skipped_core_jobs="${allowed_skipped_core_jobs:+$allowed_skipped_core_jobs,}kubernetes-e2e,kubernetes-external-driver-e2e,kubernetes-workspace-managed-e2e,kubernetes-workspace-operator-e2e"
fi
fi
{
echo "run_core_e2e=$run_core_e2e"
echo "run_gpu_e2e=$run_gpu_e2e"
echo "run_kubernetes_ha_e2e=$run_kubernetes_ha_e2e"
echo "run_kubernetes_credential_drivers_e2e=$run_kubernetes_credential_drivers_e2e"
echo "run_any_e2e=$run_any_e2e"
echo "run_docker_e2e=$run_docker_e2e"
echo "run_podman_e2e=$run_podman_e2e"
echo "run_vm_e2e=$run_vm_e2e"
echo "run_kubernetes_e2e=$run_kubernetes_e2e"
echo "allowed_skipped_core_jobs=$allowed_skipped_core_jobs"
} >> "$GITHUB_OUTPUT"

version:
Expand Down Expand Up @@ -237,22 +276,35 @@ jobs:
target-suffix: unknown-linux-gnu
secrets: inherit

build-supervisor-image:
build-sandbox-image:
needs: [pr_metadata, build-sandbox]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_any_e2e == 'true'
permissions:
contents: read
packages: write
uses: ./.github/workflows/docker-build.yml
with:
component: supervisor
component: sandbox
binary: openshell-sandbox
target-suffix: unknown-linux-musl
secrets: inherit

build-supervisor-image:
needs: [pr_metadata, build-sandbox]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_any_e2e == 'true'
permissions:
contents: read
packages: write
uses: ./.github/workflows/docker-build.yml
with:
component: supervisor
binary: openshell-supervisor
target-suffix: unknown-linux-gnu
secrets: inherit

docker-e2e:
needs: [pr_metadata, build-cli, build-conformance, build-gateway, build-supervisor-image]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_core_e2e == 'true'
needs: [pr_metadata, build-cli, build-conformance, build-gateway, build-sandbox-image, build-supervisor-image]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_docker_e2e == 'true'
permissions:
actions: read
contents: read
Expand All @@ -264,8 +316,8 @@ jobs:
conformance-artifact-prefix: openshell-conformance

podman-e2e:
needs: [pr_metadata, build-cli, build-conformance, build-gateway, build-supervisor-image]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_core_e2e == 'true'
needs: [pr_metadata, build-cli, build-conformance, build-gateway, build-sandbox-image, build-supervisor-image]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_podman_e2e == 'true'
permissions:
actions: read
contents: read
Expand All @@ -277,7 +329,7 @@ jobs:

vm-e2e:
needs: [pr_metadata, build-cli, build-conformance, build-gateway, build-vm-driver]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_core_e2e == 'true'
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_vm_e2e == 'true'
permissions:
actions: read
contents: read
Expand All @@ -287,8 +339,8 @@ jobs:
conformance-artifact-prefix: openshell-conformance

docker-external-driver-e2e:
needs: [pr_metadata, build-cli, build-conformance, build-gateway-plain, build-driver-docker, build-supervisor-image]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_core_e2e == 'true'
needs: [pr_metadata, build-cli, build-conformance, build-gateway-plain, build-driver-docker, build-sandbox-image, build-supervisor-image]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_docker_e2e == 'true'
permissions:
actions: read
contents: read
Expand All @@ -304,8 +356,8 @@ jobs:
[{"suite":"external-driver","cmd":"mise run --no-deps --skip-deps e2e:docker:external-driver","apt_packages":"openssh-client","python_proto":false,"mcp":false}]

podman-external-driver-e2e:
needs: [pr_metadata, build-cli, build-conformance, build-gateway-plain, build-driver-podman, build-supervisor-image]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_core_e2e == 'true'
needs: [pr_metadata, build-cli, build-conformance, build-gateway-plain, build-driver-podman, build-sandbox-image, build-supervisor-image]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_podman_e2e == 'true'
permissions:
actions: read
contents: read
Expand All @@ -321,7 +373,7 @@ jobs:

vm-external-driver-e2e:
needs: [pr_metadata, build-cli, build-conformance, build-gateway-plain, build-vm-driver]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_core_e2e == 'true'
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_vm_e2e == 'true'
permissions:
actions: read
contents: read
Expand All @@ -334,7 +386,7 @@ jobs:
conformance-artifact-prefix: openshell-conformance

gpu-e2e:
needs: [pr_metadata, build-cli, build-conformance, build-gateway, build-supervisor-image]
needs: [pr_metadata, build-cli, build-conformance, build-gateway, build-sandbox-image, build-supervisor-image]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_gpu_e2e == 'true'
permissions:
actions: read
Expand All @@ -346,8 +398,8 @@ jobs:
conformance-artifact-prefix: openshell-conformance

kubernetes-e2e:
needs: [pr_metadata, build-cli, build-conformance, build-gateway-image, build-supervisor-image]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_core_e2e == 'true'
needs: [pr_metadata, build-cli, build-conformance, build-gateway-image, build-sandbox-image, build-supervisor-image]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_kubernetes_e2e == 'true'
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -377,8 +429,8 @@ jobs:
conformance-artifact-prefix: openshell-conformance

kubernetes-workspace-managed-e2e:
needs: [pr_metadata, build-cli, build-conformance, build-gateway-image, build-supervisor-image]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_core_e2e == 'true'
needs: [pr_metadata, build-cli, build-conformance, build-gateway-image, build-sandbox-image, build-supervisor-image]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_kubernetes_e2e == 'true'
permissions:
actions: read
contents: read
Expand All @@ -391,8 +443,8 @@ jobs:
conformance-artifact-prefix: openshell-conformance

kubernetes-external-driver-e2e:
needs: [pr_metadata, build-cli, build-conformance, build-gateway-plain, build-driver-kubernetes, build-supervisor-image]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_core_e2e == 'true'
needs: [pr_metadata, build-cli, build-conformance, build-gateway-plain, build-driver-kubernetes, build-sandbox-image, build-supervisor-image]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_kubernetes_e2e == 'true'
permissions:
actions: read
contents: read
Expand All @@ -408,8 +460,8 @@ jobs:
conformance-artifact-prefix: openshell-conformance

kubernetes-workspace-operator-e2e:
needs: [pr_metadata, build-cli, build-conformance, build-gateway-image, build-supervisor-image]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_core_e2e == 'true'
needs: [pr_metadata, build-cli, build-conformance, build-gateway-image, build-sandbox-image, build-supervisor-image]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_kubernetes_e2e == 'true'
permissions:
actions: read
contents: read
Expand All @@ -422,7 +474,7 @@ jobs:
conformance-artifact-prefix: openshell-conformance

kubernetes-ha-e2e:
needs: [pr_metadata, build-cli, build-conformance, build-gateway-image, build-supervisor-image]
needs: [pr_metadata, build-cli, build-conformance, build-gateway-image, build-sandbox-image, build-supervisor-image]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_kubernetes_ha_e2e == 'true'
permissions:
actions: read
Expand All @@ -437,7 +489,7 @@ jobs:
conformance-artifact-prefix: openshell-conformance

kubernetes-credential-drivers-e2e:
needs: [pr_metadata, build-cli, build-conformance, build-gateway-image, build-supervisor-image]
needs: [pr_metadata, build-cli, build-conformance, build-gateway-image, build-sandbox-image, build-supervisor-image]
if: needs.pr_metadata.outputs.should_run == 'true' && needs.pr_metadata.outputs.run_kubernetes_credential_drivers_e2e == 'true'
permissions:
actions: read
Expand All @@ -462,6 +514,7 @@ jobs:
- uses: ./.github/actions/check-job-results
with:
results: ${{ toJSON(needs) }}
allowed-skipped-jobs: ${{ needs.pr_metadata.outputs.allowed_skipped_core_jobs }}

gpu-e2e-result:
name: GPU E2E result
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/build-binaries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ on:
required: false
type: string
default: ""
interpreter:
description: Expected ELF program interpreter, "none" for static, or "skip"
required: false
type: string
default: skip
checkout-ref:
required: false
type: string
Expand Down Expand Up @@ -67,3 +72,4 @@ jobs:
image-tag: ${{ inputs['image-tag'] }}
artifact-name: ${{ inputs['artifact-name'] }}
extra-cargo-flags: ${{ inputs['extra-cargo-flags'] }}
interpreter: ${{ inputs.interpreter }}
Loading
Loading