| #!/usr/bin/env bash |
| set -euo pipefail |
|
|
| ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" |
| TMP_ENV="$(mktemp "${TMPDIR:-/tmp}/matchday-deploy-env.XXXXXX")" |
| trap 'rm -f "$TMP_ENV"' EXIT |
|
|
| cat >"$TMP_ENV" <<'ENV' |
| POSTGRES_PASSWORD=validation-only-password |
| MATCHDAY_BACKEND_SIGNING_SECRET=validation-only-signing-secret-with-32-bytes |
| DASHSCOPE_API_KEY=validation-only-qwen-key |
| MATCHDAY_PUBLIC_URL=https://example.invalid |
| MATCHDAY_PUBLIC_HOST=example.invalid |
| ENV |
|
|
| MATCHDAY_RELEASE=validation-commit docker compose --env-file "$TMP_ENV" \ |
| -f "$ROOT/deploy/alibaba/docker-compose.yml" config --quiet |
|
|
| if ! rg -q '^ run-worker:' "$ROOT/deploy/alibaba/docker-compose.yml"; then |
| echo "Durable run-worker service is missing from the deployment manifest." >&2 |
| exit 1 |
| fi |
|
|
| if ! rg -q 'command: \["python", "-m", "matchday\.run_worker"\]' \ |
| "$ROOT/deploy/alibaba/docker-compose.yml"; then |
| echo "Durable run-worker service does not invoke matchday.run_worker." >&2 |
| exit 1 |
| fi |
|
|
| for variable in \ |
| MATCHDAY_QWEN_TIMEOUT_SECONDS \ |
| MATCHDAY_SERPAPI_TIMEOUT_SECONDS \ |
| MATCHDAY_SERPAPI_MAX_RESULTS \ |
| MATCHDAY_TRAVEL_ACTION_CACHE_SECONDS \ |
| MATCHDAY_WEB_BLOCKED_DOMAINS \ |
| UNSPLASH_ACCESS_KEY \ |
| MATCHDAY_CONTEXT_ENABLED \ |
| MATCHDAY_CONTEXT_TIMEOUT_SECONDS \ |
| MATCHDAY_NEARBY_MAX_RESULTS \ |
| MATCHDAY_NEARBY_RADIUS_KM \ |
| MATCHDAY_FIXTURE_REFRESH_ENABLED \ |
| MATCHDAY_FIXTURE_REFRESH_INTERVAL_SECONDS \ |
| MATCHDAY_FIXTURE_STALE_SECONDS \ |
| MATCHDAY_FIXTURE_REFRESH_TIMEOUT_SECONDS \ |
| MATCHDAY_FIXTURE_REFRESH_RETRY_SECONDS \ |
| MATCHDAY_AGENT_MAX_STEPS \ |
| MATCHDAY_RUN_STALL_SECONDS \ |
| MATCHDAY_RUN_MAX_SECONDS \ |
| MATCHDAY_RUN_LEASE_SECONDS \ |
| MATCHDAY_RUN_MAX_ATTEMPTS \ |
| MATCHDAY_RUN_MAX_MODEL_TURNS \ |
| MATCHDAY_RUN_MAX_TOOL_CALLS \ |
| MATCHDAY_RUN_MAX_COST_UNITS \ |
| MATCHDAY_RUN_RETRY_BASE_SECONDS \ |
| MATCHDAY_RUN_WORKER_POLL_SECONDS \ |
| VIATOR_API_KEY \ |
| MATCHDAY_VIATOR_ACCESS_TIER \ |
| MATCHDAY_VIATOR_ENVIRONMENT \ |
| MATCHDAY_VIATOR_TIMEOUT_SECONDS \ |
| MATCHDAY_VIATOR_MAX_RETRIES \ |
| MATCHDAY_VIATOR_LOCAL_RATE_LIMIT_PER_MINUTE \ |
| OPENROUTESERVICE_API_KEY \ |
| MATCHDAY_OPENROUTESERVICE_TIMEOUT_SECONDS \ |
| MATCHDAY_OPENROUTESERVICE_MAX_RETRIES \ |
| MATCHDAY_OPENROUTESERVICE_LOCAL_RATE_LIMIT_PER_DAY \ |
| AMADEUS_API_KEY \ |
| AMADEUS_API_SECRET \ |
| MATCHDAY_AMADEUS_ENVIRONMENT \ |
| MATCHDAY_AMADEUS_TIMEOUT_SECONDS \ |
| MATCHDAY_AMADEUS_MAX_RETRIES \ |
| MATCHDAY_AMADEUS_LOCAL_RATE_LIMIT_PER_MINUTE; do |
| matches="$(rg -c "^[[:space:]]+${variable}:" "$ROOT/deploy/alibaba/docker-compose.yml" || true)" |
| if [ "${matches:-0}" -lt 2 ]; then |
| echo "Runtime/provider variable is not forwarded to both API and run-worker: ${variable}" >&2 |
| exit 1 |
| fi |
| done |
|
|
| if rg -n 'CreateInstance|RunInstances|CreateServer|ModifyInstance|ResizeDisk' \ |
| "$ROOT/deploy/alibaba"; then |
| echo "Billable Alibaba mutation command found in deployment automation." >&2 |
| exit 1 |
| fi |
|
|
| echo "Deployment manifest valid; no Alibaba resource-creation command found." |
|
|