Files
mygit/e2e/scripts/prepare-ci-e2e-job.sh
T
DuckQ1u 93d1b7c3d3
Copilot Setup Steps / copilot-setup-steps (push) Has been cancelled
first commit
2026-04-22 19:51:20 +07:00

57 lines
1.4 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
SKIP_IMAGE_BUILD="${GHOST_E2E_SKIP_IMAGE_BUILD:-false}"
if [[ "$SKIP_IMAGE_BUILD" != "true" && -z "${GHOST_E2E_BASE_IMAGE:-}" ]]; then
echo "GHOST_E2E_BASE_IMAGE is required when building the E2E image in-job" >&2
exit 1
fi
cd "$REPO_ROOT"
echo "Preparing CI E2E job"
echo "E2E image: ${GHOST_E2E_IMAGE:-ghost-e2e:local}"
echo "Skip image build: ${SKIP_IMAGE_BUILD}"
if [[ "$SKIP_IMAGE_BUILD" != "true" ]]; then
echo "Base image: ${GHOST_E2E_BASE_IMAGE}"
fi
pids=()
labels=()
run_bg() {
local label="$1"
shift
labels+=("$label")
(
echo "[${label}] starting"
"$@"
echo "[${label}] done"
) &
pids+=("$!")
}
# Mostly IO-bound runtime prep (image pulls + infra startup + Tinybird sync) can
# overlap with the app/docker builds.
run_bg "runtime-preflight" bash "$REPO_ROOT/e2e/scripts/prepare-ci-e2e-build-mode.sh"
if [[ "$SKIP_IMAGE_BUILD" == "true" ]]; then
echo "Using prebuilt E2E image; skipping app and Docker image build."
else
# Build the assets + E2E image layer while IO-heavy prep is running.
pnpm --filter @tryghost/e2e build:apps
pnpm --filter @tryghost/e2e build:docker
fi
for i in "${!pids[@]}"; do
if ! wait "${pids[$i]}"; then
echo "[${labels[$i]}] failed" >&2
exit 1
fi
done