45 lines
1.6 KiB
Bash
Executable File
45 lines
1.6 KiB
Bash
Executable File
#!/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" <<EOF
|
|
{
|
|
"run_id": "$RUN_ID",
|
|
"image_tag": "$IMAGE_TAG",
|
|
"image_id": "$id",
|
|
"repo_digest": "$digest",
|
|
"output_tar": "$(python - <<PY
|
|
import os, sys
|
|
print(os.path.relpath("$OUTPUT_TAR","$ROOT"))
|
|
PY
|
|
)"
|
|
}
|
|
EOF
|
|
|
|
echo "Built $IMAGE_TAG"
|
|
echo "Saved tarball: $OUTPUT_TAR"
|
|
echo "Metadata: $META_JSON"
|