Files
mkt.ose.tw/scripts/run_validation_batch.sh
2026-03-23 20:23:58 +08:00

149 lines
2.9 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
BATCH="${1:-all}"
ENV_FILE="${2:-}"
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
load_env_file() {
local env_file="$1"
if [[ -z "${env_file}" ]]; then
return 0
fi
if [[ ! -f "${env_file}" ]]; then
echo "Env file not found: ${env_file}"
exit 1
fi
set -a
# shellcheck disable=SC1090
source "${env_file}"
set +a
}
check_required_vars() {
local batch_name="$1"
shift
local missing=()
local var_name value
for var_name in "$@"; do
value="${!var_name:-}"
if [[ -z "${value}" ]]; then
missing+=("${var_name}")
fi
done
if (( ${#missing[@]} > 0 )); then
echo ""
echo "Missing required env for ${batch_name}:"
printf ' - %s\n' "${missing[@]}"
echo ""
echo "Tip:"
echo " Copy scripts/.env.validation.example and fill the required values."
exit 1
fi
}
run_validation_smoke() {
check_required_vars "validation smoke" API_BASE_URL ACCESS_TOKEN
echo ""
echo ">>> Batch 1 / Batch 2: validation_smoke_test.sh"
bash "${ROOT_DIR}/scripts/validation_smoke_test.sh"
}
run_editor_smoke() {
check_required_vars "editor smoke" API_BASE_URL ACCESS_TOKEN VARIANT_ID BASE_URL
echo ""
echo ">>> Batch 3: editor_smoke_test.sh"
bash "${ROOT_DIR}/scripts/editor_smoke_test.sh"
}
run_runtime_smoke() {
check_required_vars \
"runtime smoke" \
API_BASE_URL \
PAGE_URL \
EXPERIMENT_ID \
EXPERIMENT_KEY \
VARIANT_ID \
VARIANT_KEY
if [[ -z "${SITE_ID:-}" && -z "${SITE_KEY:-}" ]]; then
echo ""
echo "Missing required env for runtime smoke:"
echo " - SITE_ID or SITE_KEY"
echo ""
echo "Tip:"
echo " Provide at least one of SITE_ID / SITE_KEY in your validation env."
exit 1
fi
echo ""
echo ">>> Batch 4: runtime_smoke_test.sh"
bash "${ROOT_DIR}/scripts/runtime_smoke_test.sh"
}
print_usage() {
cat <<'EOF'
Usage:
bash scripts/run_validation_batch.sh <batch> [env-file]
Available batch values:
batch1 Run health/auth smoke
batch2 Run admin data smoke
batch3 Run editor smoke
batch4 Run runtime smoke
batch1-3 Run batch1 + batch2 + batch3
all Run batch1 + batch2 + batch3 + batch4
Recommended:
1. copy scripts/.env.validation.example to your own env file
2. fill real staging values
3. run batch1-3 first
4. pass the env file path as the second argument
EOF
}
load_env_file "${ENV_FILE}"
case "${BATCH}" in
batch1)
run_validation_smoke
;;
batch2)
run_validation_smoke
;;
batch3)
run_editor_smoke
;;
batch4)
run_runtime_smoke
;;
batch1-3)
run_validation_smoke
run_editor_smoke
;;
all)
run_validation_smoke
run_editor_smoke
run_runtime_smoke
;;
help|-h|--help)
print_usage
exit 0
;;
*)
echo "Unknown batch: ${BATCH}"
echo ""
print_usage
exit 1
;;
esac
echo ""
echo "Validation batch '${BATCH}' completed."