Skip to content

Commit d98c928

Browse files
authored
ci: remove sandbox docker build from publish and e2e workflows (#275)
1 parent cd79038 commit d98c928

17 files changed

Lines changed: 39 additions & 53 deletions

File tree

.github/workflows/docker-build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ on:
44
workflow_call:
55
inputs:
66
component:
7-
description: "Component to build (gateway, sandbox, cluster)"
7+
description: "Component to build (gateway, cluster)"
88
required: true
99
type: string
1010
timeout-minutes:

.github/workflows/e2e.yml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,14 @@ jobs:
1515
with:
1616
component: gateway
1717

18-
build-sandbox:
19-
if: contains(github.event.pull_request.labels.*.name, 'e2e')
20-
uses: ./.github/workflows/docker-build.yml
21-
with:
22-
component: sandbox
23-
2418
build-cluster:
2519
if: contains(github.event.pull_request.labels.*.name, 'e2e')
2620
uses: ./.github/workflows/docker-build.yml
2721
with:
2822
component: cluster
2923

3024
e2e:
31-
needs: [build-gateway, build-sandbox, build-cluster]
25+
needs: [build-gateway, build-cluster]
3226
uses: ./.github/workflows/e2e-test.yml
3327
with:
3428
image-tag: ${{ github.sha }}

.github/workflows/publish.yml

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,14 @@ jobs:
1919
with:
2020
component: gateway
2121

22-
build-sandbox:
23-
uses: ./.github/workflows/docker-build.yml
24-
with:
25-
component: sandbox
26-
2722
build-cluster:
2823
uses: ./.github/workflows/docker-build.yml
2924
with:
3025
component: cluster
3126

3227
tag-ghcr-latest:
3328
name: Tag GHCR Images as Latest
34-
needs: [build-gateway, build-sandbox, build-cluster]
29+
needs: [build-gateway, build-cluster]
3530
runs-on: build-amd64
3631
timeout-minutes: 10
3732
steps:
@@ -42,7 +37,7 @@ jobs:
4237
run: |
4338
set -euo pipefail
4439
REGISTRY="ghcr.io/nvidia/openshell"
45-
for component in gateway sandbox cluster; do
40+
for component in gateway cluster; do
4641
echo "Tagging ${REGISTRY}/${component}:${{ github.sha }} as latest..."
4742
docker buildx imagetools create \
4843
--prefer-index=false \
@@ -52,7 +47,7 @@ jobs:
5247
5348
build-python-wheels:
5449
name: Stage Python Wheels
55-
needs: [build-gateway, build-sandbox, build-cluster]
50+
needs: [build-gateway, build-cluster]
5651
runs-on: build-amd64
5752
timeout-minutes: 120
5853
outputs:
@@ -137,7 +132,7 @@ jobs:
137132

138133
- uses: actions/setup-python@v5
139134
with:
140-
python-version: "3.12"
135+
python-version: "3.13"
141136

142137
- name: Install publish dependencies
143138
run: |

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ The sandbox container includes the following tools by default:
4040
| Category | Tools |
4141
| ---------- | -------------------------------------------------------- |
4242
| Agent | `claude`, `opencode`, `codex` |
43-
| Language | `python` (3.12), `node` (22) |
43+
| Language | `python` (3.13), `node` (22) |
4444
| Developer | `gh`, `git`, `vim`, `nano` |
4545
| Networking | `ping`, `dig`, `nslookup`, `nc`, `traceroute`, `netstat` |
4646

architecture/security-policy.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -606,7 +606,7 @@ network_policies:
606606
allowed_ips:
607607
- "10.86.8.223/32"
608608
binaries:
609-
- { path: /usr/local/bin/python3.12 }
609+
- { path: /usr/local/bin/python3.13 }
610610
```
611611
612612
With this policy, both work:
@@ -1090,7 +1090,7 @@ network_policies:
10901090
allowed_ips:
10911091
- "10.86.8.223/32"
10921092
binaries:
1093-
- { path: /usr/local/bin/python3.12 }
1093+
- { path: /usr/local/bin/python3.13 }
10941094

10951095
inference:
10961096
allowed_routes:

crates/navigator-sandbox/src/l7/tls.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ impl CertCache {
117117

118118
let mut params = CertificateParams::new(vec![hostname.to_string()]).into_diagnostic()?;
119119
params.distinguished_name.push(DnType::CommonName, hostname);
120+
params.use_authority_key_identifier_extension = true;
120121

121122
let leaf_cert = params
122123
.signed_by(&leaf_key, &self.ca.ca_cert, &self.ca.ca_key)

docs/tutorials/github-sandbox.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -312,9 +312,7 @@ network_policies:
312312
- { path: /sandbox/.venv/bin/python }
313313
- { path: /sandbox/.venv/bin/python3 }
314314
- { path: /sandbox/.venv/bin/pip }
315-
- { path: /app/.venv/bin/python }
316-
- { path: /app/.venv/bin/python3 }
317-
- { path: /app/.venv/bin/pip }
315+
- { path: "/sandbox/.uv/python/**/python*" }
318316
- { path: /usr/local/bin/uv }
319317
- { path: "/sandbox/.uv/python/**" }
320318

e2e/python/test_sandbox_policy.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,9 @@ def _policy_for_python_proxy_tests() -> sandbox_pb2.SandboxPolicy:
5151
endpoints=[
5252
sandbox_pb2.NetworkEndpoint(host="api.openai.com", port=443)
5353
],
54-
binaries=[sandbox_pb2.NetworkBinary(path="/app/.venv/bin/python")],
54+
binaries=[
55+
sandbox_pb2.NetworkBinary(path="/sandbox/.uv/python/**/python*")
56+
],
5557
)
5658
},
5759
)
@@ -373,7 +375,7 @@ def test_l4_binary_restricted_denies_wrong_binary(
373375
"""L4-3: Policy restricted to specific binary denies others.
374376
375377
Policy allows /usr/bin/curl -> api.anthropic.com:443.
376-
Python (exec_python uses /app/.venv/bin/python) should be denied.
378+
Python (exec_python uses python) should be denied.
377379
"""
378380
policy = _base_policy(
379381
network_policies={
@@ -438,7 +440,9 @@ def test_l4_cross_policy_denied(
438440
endpoints=[
439441
sandbox_pb2.NetworkEndpoint(host="api.anthropic.com", port=443),
440442
],
441-
binaries=[sandbox_pb2.NetworkBinary(path="/app/.venv/bin/python")],
443+
binaries=[
444+
sandbox_pb2.NetworkBinary(path="/sandbox/.uv/python/**/python*")
445+
],
442446
),
443447
"other": sandbox_pb2.NetworkPolicyRule(
444448
name="other",

e2e/python/test_sandbox_venv.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,6 @@ def test_sandbox_venv_in_path(
3737
assert "/sandbox/.venv/bin" in path_dirs, (
3838
f"Expected /sandbox/.venv/bin in PATH, got: {result.stdout.strip()}"
3939
)
40-
# /sandbox/.venv/bin must come before /app/.venv/bin
41-
sandbox_idx = path_dirs.index("/sandbox/.venv/bin")
42-
app_idx = path_dirs.index("/app/.venv/bin")
43-
assert sandbox_idx < app_idx, (
44-
"/sandbox/.venv/bin must precede /app/.venv/bin in PATH"
45-
)
4640

4741

4842
def test_pip_install_in_sandbox(

e2e/rust/tests/cli_smoke.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,9 @@ async fn sandbox_help_shows_upload_download() {
8484
}
8585

8686
/// `openshell sandbox create --help` must show `--upload`, `--no-git-ignore`,
87-
/// `--bootstrap`/`--no-bootstrap`, `--editor`, and
87+
/// `--no-bootstrap`, `--editor`, and
8888
/// `--auto-providers`/`--no-auto-providers`.
89+
/// Note: `--bootstrap` is intentionally hidden (it's the default behaviour).
8990
#[tokio::test]
9091
async fn sandbox_create_help_shows_new_flags() {
9192
let (output, code) = run_isolated(&["sandbox", "create", "--help"]).await;
@@ -95,7 +96,6 @@ async fn sandbox_create_help_shows_new_flags() {
9596
for flag in [
9697
"--upload",
9798
"--no-git-ignore",
98-
"--bootstrap",
9999
"--no-bootstrap",
100100
"--editor",
101101
"--auto-providers",

0 commit comments

Comments
 (0)