@@ -161,6 +161,61 @@ jobs:
161161 fi
162162 exit 0
163163
164+ isolation-conformance :
165+ name : Isolation conformance (privileged Linux)
166+ needs : pr_metadata
167+ if : needs.pr_metadata.outputs.should_run == 'true'
168+ runs-on : linux-amd64-cpu8
169+ timeout-minutes : 20
170+ container :
171+ image : ghcr.io/nvidia/openshell/ci:latest
172+ options : --privileged
173+ credentials :
174+ username : ${{ github.actor }}
175+ password : ${{ secrets.GITHUB_TOKEN }}
176+ steps :
177+ - uses : actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
178+
179+ - name : Install tools and network helpers
180+ run : |
181+ apt-get update
182+ apt-get install -y --no-install-recommends iproute2 nftables iptables util-linux
183+ mise install --locked
184+
185+ - name : Materialize the Alpine trusted helper runtime fixture
186+ run : |
187+ alpine_root="${RUNNER_TEMP}/openshell-alpine-root"
188+ runtime="${RUNNER_TEMP}/openshell-runtime"
189+ archive="${RUNNER_TEMP}/alpine-minirootfs.tar.gz"
190+ curl -fsSL \
191+ https://dl-cdn.alpinelinux.org/alpine/v3.22/releases/x86_64/alpine-minirootfs-3.22.5-x86_64.tar.gz \
192+ -o "$archive"
193+ echo "4b4daa9fe2fc696c4919c4412a4c3d3e770d8fb70292a004a2c72f5096175282 $archive" \
194+ | sha256sum -c -
195+ mkdir -p "$alpine_root" "$runtime"
196+ tar -xzf "$archive" -C "$alpine_root"
197+ cp /etc/resolv.conf "$alpine_root/etc/resolv.conf"
198+ chroot "$alpine_root" /sbin/apk add --no-cache \
199+ iproute2 nftables iptables iptables-legacy
200+ for path in /bin /sbin /lib /lib64 /usr/bin /usr/sbin /usr/lib /usr/lib64 /etc/iproute2 /usr/share/nftables; do
201+ if [ -e "$alpine_root$path" ]; then
202+ (cd "$alpine_root" && cp -aL --parents ".$path" "$runtime")
203+ fi
204+ done
205+ chmod -R go-w "$runtime"
206+
207+ - name : Exercise the live default-deny ceiling
208+ run : |
209+ cargo test -p openshell-isolation -p openshell-supervisor-process \
210+ -p openshell-supervisor-network -p openshell-sandbox
211+ OPENSHELL_TEST_TRUSTED_RUNTIME_ROOT="${RUNNER_TEMP}/openshell-runtime" \
212+ cargo test -p openshell-supervisor-process \
213+ installed_egress_ceiling_ -- \
214+ --ignored --nocapture --test-threads=1
215+ cargo test -p openshell-sandbox \
216+ pid_one_exit_kills_unregistered_setsid_descendant_within_bound -- \
217+ --ignored --nocapture --test-threads=1
218+
164219 rust-macos :
165220 name : Rust lint (macOS)
166221 needs : pr_metadata
0 commit comments