82 行
2.9 KiB
Bash
82 行
2.9 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
qa_diagnostic_cleanup() {
|
|
local command_status=$?
|
|
local cleanup_status=0
|
|
local owned_server="$QA_SERVER_OWNED"
|
|
trap - EXIT
|
|
qa_cleanup_server || cleanup_status=1
|
|
if [[ "$owned_server" == "1" ]]; then
|
|
qa_wait_port_free 15 || cleanup_status=1
|
|
fi
|
|
if [[ "$QA_DB_CREATED" == "1" ]]; then
|
|
qa_dropdb || cleanup_status=1
|
|
local remaining
|
|
remaining="$(qa_psql -Atc "SELECT count(*) FROM pg_database WHERE datname = '$QA_DB_NAME'")" || cleanup_status=1
|
|
[[ "$remaining" == "0" ]] || cleanup_status=1
|
|
fi
|
|
node -e 'require("node:fs").writeFileSync(process.argv[1], JSON.stringify({phase:process.argv[2],commandExit:Number(process.argv[3]),cleanupExit:Number(process.argv[4]),database:process.argv[5]}))' \
|
|
"$QA_DIAGNOSTIC_STAGE_DIR/outcome.json" "$QA_DIAGNOSTIC_PHASE" "$command_status" "$cleanup_status" "$QA_DB_NAME"
|
|
if [[ "$command_status" != "0" ]]; then exit "$command_status"; fi
|
|
exit "$cleanup_status"
|
|
}
|
|
|
|
qa_run_diagnostic_stage() {
|
|
local stage="$1"
|
|
[[ -d "${QA_DIAGNOSTIC_STAGE_DIR:-}" && "$QA_DB_NAME" =~ ^hyb_oa_diag_[a-z0-9_]+$ ]] || exit 2
|
|
[[ "$QA_DB_HOST" == "127.0.0.1" && "$QA_DB_CLIENT" == "host" && "$QA_KEEP_DB" == "0" ]] || exit 2
|
|
[[ -n "${QA_DIAGNOSTIC_REASON:-}" && -n "${QA_DIAGNOSTIC_OPERATOR:-}" && -n "${QA_DIAGNOSTIC_APPROVAL_REF:-}" ]] || exit 2
|
|
QA_DIAGNOSTIC_PHASE=prepare
|
|
trap qa_diagnostic_cleanup EXIT
|
|
trap 'exit 130' INT
|
|
trap 'exit 143' TERM
|
|
qa_require_cmd node
|
|
qa_require_cmd npm
|
|
qa_select_port
|
|
qa_export_app_env
|
|
case "$stage" in
|
|
inputs)
|
|
qa_prepare_full_inputs
|
|
node -e 'require("node:fs").writeFileSync(process.argv[1], JSON.stringify({root:process.argv[2],buildA:process.argv[3],buildB:process.argv[4],shaA:process.argv[5],shaB:process.argv[6]}))' \
|
|
"$QA_DIAGNOSTIC_STAGE_DIR/pwa-fixture.json" "$PWA_FIXTURE_ROOT" "$PWA_BUILD_A_DIR" "$PWA_BUILD_B_DIR" "$PWA_BUILD_A_SHA" "$PWA_BUILD_B_SHA"
|
|
;;
|
|
tools)
|
|
cd "$SERVER_DIR"
|
|
npm run prisma:generate
|
|
npm run prisma:check-generated
|
|
npm run prisma:validate
|
|
;;
|
|
server-unit)
|
|
cd "$SERVER_DIR"
|
|
QA_DIAGNOSTIC_PHASE=test
|
|
npm test
|
|
;;
|
|
typecheck)
|
|
cd "$CLIENT_DIR"
|
|
QA_DIAGNOSTIC_PHASE=test
|
|
npx tsc --noEmit --pretty false --extendedDiagnostics
|
|
;;
|
|
client-build)
|
|
qa_build_client
|
|
;;
|
|
workflow-actions|server-regressions|browser)
|
|
qa_require_cmd curl
|
|
qa_require_db_client
|
|
qa_prepare_db
|
|
if [[ "$stage" == "browser" ]]; then export JOBS_ENABLED="${JOBS_ENABLED_FOR_E2E:-true}"; else export JOBS_ENABLED=false; fi
|
|
qa_start_server
|
|
QA_DIAGNOSTIC_PHASE=test
|
|
cd "$SERVER_DIR"
|
|
case "$stage" in
|
|
workflow-actions) ./scripts/regression-workflow-actions.sh ;;
|
|
server-regressions) ./scripts/regression-all.sh ;;
|
|
browser)
|
|
PWA_FIXTURE_ROOT="$QA_DIAGNOSTIC_PWA_ROOT"
|
|
qa_run_full_browser --trace=on
|
|
;;
|
|
esac
|
|
;;
|
|
*) exit 2 ;;
|
|
esac
|
|
}
|