@@ -73,7 +73,6 @@ DOCKER_NETWORK_NAME=""
7373DOCKER_NETWORK_CONNECTED_CONTAINER=" "
7474DOCKER_NETWORK_MANAGED=0
7575GPU_MODE=" ${OPENSHELL_E2E_DOCKER_GPU:- 0} "
76- DOCKER_SUPERVISOR_ARGS=()
7776
7877# Isolate CLI/SDK gateway metadata from the developer's real config.
7978export XDG_CONFIG_HOME=" ${WORKDIR} /config"
@@ -255,25 +254,6 @@ if [ "${GPU_MODE}" = "1" ]; then
255254 fi
256255fi
257256
258- normalize_arch () {
259- case " $1 " in
260- x86_64|amd64) echo " amd64" ;;
261- aarch64|arm64) echo " arm64" ;;
262- * ) echo " $1 " ;;
263- esac
264- }
265-
266- linux_target_triple () {
267- case " $1 " in
268- amd64) echo " x86_64-unknown-linux-gnu" ;;
269- arm64) echo " aarch64-unknown-linux-gnu" ;;
270- * )
271- echo " ERROR: unsupported Docker daemon architecture '$1 '" >&2
272- exit 2
273- ;;
274- esac
275- }
276-
277257resolve_docker_supervisor_image () {
278258 if [ -n " ${OPENSHELL_DOCKER_SUPERVISOR_IMAGE:- } " ]; then
279259 printf ' %s\n' " ${OPENSHELL_DOCKER_SUPERVISOR_IMAGE} "
@@ -296,7 +276,7 @@ resolve_docker_supervisor_image() {
296276 return 0
297277 fi
298278
299- printf ' %s\n' " "
279+ printf ' %s\n' " openshell/supervisor:dev "
300280}
301281
302282docker_pull_with_retry () {
@@ -328,6 +308,21 @@ docker_pull_with_retry() {
328308ensure_docker_supervisor_image () {
329309 local image=$1
330310
311+ if [ " ${image} " = " openshell/supervisor:dev" ] \
312+ && [ -z " ${OPENSHELL_DOCKER_SUPERVISOR_IMAGE:- } " ] \
313+ && [ -z " ${OPENSHELL_SUPERVISOR_IMAGE:- } " ] \
314+ && [ -z " ${CI:- } " ]; then
315+ echo " Building local Docker supervisor image ${image} ..."
316+ CONTAINER_ENGINE=docker IMAGE_TAG=dev \
317+ bash " ${ROOT} /tasks/scripts/docker-build-image.sh" supervisor
318+ if docker image inspect " ${image} " > /dev/null 2>&1 ; then
319+ return 0
320+ fi
321+
322+ echo " ERROR: expected supervisor image '${image} ' after local build." >&2
323+ exit 2
324+ fi
325+
331326 if docker image inspect " ${image} " > /dev/null 2>&1 ; then
332327 return 0
333328 fi
@@ -342,47 +337,11 @@ ensure_docker_supervisor_image() {
342337 exit 2
343338}
344339
345- DAEMON_ARCH=" $( normalize_arch " $( docker info --format ' {{.Architecture}}' 2> /dev/null || true) " ) "
346- SUPERVISOR_TARGET=" $( linux_target_triple " ${DAEMON_ARCH} " ) "
347- HOST_OS=" $( uname -s) "
348- HOST_ARCH=" $( normalize_arch " $( uname -m) " ) "
349- SUPERVISOR_OUT_DIR=" ${WORKDIR} /supervisor/${DAEMON_ARCH} "
350- SUPERVISOR_BIN=" ${SUPERVISOR_OUT_DIR} /openshell-sandbox"
351-
352- CARGO_BUILD_JOBS_ARG=()
353- if [ -n " ${CARGO_BUILD_JOBS:- } " ]; then
354- CARGO_BUILD_JOBS_ARG=(-j " ${CARGO_BUILD_JOBS} " )
355- fi
356-
357340e2e_build_gateway_binaries " ${ROOT} " TARGET_DIR GATEWAY_BIN CLI_BIN
358341
359342SUPERVISOR_IMAGE=" $( resolve_docker_supervisor_image) "
360- if [ -n " ${SUPERVISOR_IMAGE} " ]; then
361- ensure_docker_supervisor_image " ${SUPERVISOR_IMAGE} "
362- echo " Using Docker supervisor image: ${SUPERVISOR_IMAGE} "
363- DOCKER_SUPERVISOR_ARGS=(--docker-supervisor-image " ${SUPERVISOR_IMAGE} " )
364- else
365- echo " Building openshell-sandbox for ${SUPERVISOR_TARGET} ..."
366- mkdir -p " ${SUPERVISOR_OUT_DIR} "
367- if [ " ${HOST_OS} " = " Linux" ] && [ " ${HOST_ARCH} " = " ${DAEMON_ARCH} " ]; then
368- rustup target add " ${SUPERVISOR_TARGET} " > /dev/null 2>&1 || true
369- cargo build ${CARGO_BUILD_JOBS_ARG[@]+" ${CARGO_BUILD_JOBS_ARG[@]} " } \
370- --release -p openshell-sandbox --target " ${SUPERVISOR_TARGET} "
371- cp " ${TARGET_DIR} /${SUPERVISOR_TARGET} /release/openshell-sandbox" " ${SUPERVISOR_BIN} "
372- else
373- CONTAINER_ENGINE=docker \
374- DOCKER_PLATFORM=" linux/${DAEMON_ARCH} " \
375- DOCKER_OUTPUT=" type=local,dest=${SUPERVISOR_OUT_DIR} " \
376- bash " ${ROOT} /tasks/scripts/docker-build-image.sh" supervisor-output
377- fi
378-
379- if [ ! -f " ${SUPERVISOR_BIN} " ]; then
380- echo " ERROR: expected supervisor binary at ${SUPERVISOR_BIN} " >&2
381- exit 1
382- fi
383- chmod +x " ${SUPERVISOR_BIN} "
384- DOCKER_SUPERVISOR_ARGS=(--docker-supervisor-bin " ${SUPERVISOR_BIN} " )
385- fi
343+ ensure_docker_supervisor_image " ${SUPERVISOR_IMAGE} "
344+ echo " Using Docker supervisor image: ${SUPERVISOR_IMAGE} "
386345
387346DEFAULT_SANDBOX_IMAGE=" ghcr.io/nvidia/openshell-community/sandboxes/base:latest"
388347SANDBOX_IMAGE=" ${OPENSHELL_E2E_DOCKER_SANDBOX_IMAGE:- ${OPENSHELL_SANDBOX_IMAGE:- ${DEFAULT_SANDBOX_IMAGE} } } "
@@ -451,19 +410,7 @@ GATEWAY_CONFIG="${STATE_DIR}/gateway.toml"
451410 printf ' guest_tls_cert = %s\n' " $( toml_string " ${PKI_DIR} /client/tls.crt" ) "
452411 printf ' guest_tls_key = %s\n' " $( toml_string " ${PKI_DIR} /client/tls.key" ) "
453412 printf ' enable_bind_mounts = true\n'
454- # DOCKER_SUPERVISOR_ARGS holds either ("--docker-supervisor-bin" "<path>")
455- # or ("--docker-supervisor-image" "<image>"); both map to TOML keys on
456- # the docker driver config.
457- for (( i= 0 ; i< ${# DOCKER_SUPERVISOR_ARGS[@]} ; i+= 2 )) ; do
458- case " ${DOCKER_SUPERVISOR_ARGS[$i]} " in
459- --docker-supervisor-bin)
460- printf ' supervisor_bin = %s\n' " $( toml_string " ${DOCKER_SUPERVISOR_ARGS[$((i+1))]} " ) "
461- ;;
462- --docker-supervisor-image)
463- printf ' supervisor_image = %s\n' " $( toml_string " ${DOCKER_SUPERVISOR_ARGS[$((i+1))]} " ) "
464- ;;
465- esac
466- done
413+ printf ' supervisor_image = %s\n' " $( toml_string " ${SUPERVISOR_IMAGE} " ) "
467414 if [ -n " ${GATEWAY_HOST_ALIAS_IP} " ]; then
468415 printf ' host_gateway_ip = %s\n' " $( toml_string " ${GATEWAY_HOST_ALIAS_IP} " ) "
469416 fi
0 commit comments