#!/usr/bin/env bash set -euo pipefail # CI-friendly wrapper to build the console runner image with baked npm/Playwright caches # and emit a tarball + metadata for offline distribution. # # Inputs (env): # RUN_ID : unique run identifier (default: $GITHUB_RUN_ID or UTC timestamp) # IMAGE_TAG : optional override of image tag (default: stellaops/console-runner:offline-$RUN_ID) # OUTPUT_TAR : optional override of tarball path (default: ops/devops/artifacts/console-runner/console-runner-$RUN_ID.tar) # APP_DIR : optional override of app directory (default: src/Web/StellaOps.Web) ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" RUN_ID="${RUN_ID:-${GITHUB_RUN_ID:-$(date -u +%Y%m%dT%H%M%SZ)}}" APP_DIR="${APP_DIR:-src/Web/StellaOps.Web}" IMAGE_TAG="${IMAGE_TAG:-stellaops/console-runner:offline-$RUN_ID}" OUTPUT_TAR="${OUTPUT_TAR:-$ROOT/ops/devops/artifacts/console-runner/console-runner-$RUN_ID.tar}" META_DIR="$(dirname "$OUTPUT_TAR")" META_JSON="$META_DIR/console-runner-$RUN_ID.json" mkdir -p "$META_DIR" IMAGE_TAG="$IMAGE_TAG" OUTPUT_TAR="$OUTPUT_TAR" APP_DIR="$APP_DIR" "$ROOT/ops/devops/console/build-runner-image.sh" digest="$(docker image inspect --format='{{index .RepoDigests 0}}' "$IMAGE_TAG" || true)" id="$(docker image inspect --format='{{.Id}}' "$IMAGE_TAG" || true)" cat > "$META_JSON" <