From 838cb38862ff77fe30eeff28560262a049710363 Mon Sep 17 00:00:00 2001 From: robbond Date: Sat, 7 Mar 2026 06:37:14 +0000 Subject: [PATCH] fix(deploy): add smoke check retries and pass public Supabase build env --- Dockerfile | 5 +++++ Jenkinsfile | 4 +++- scripts/smoke-check.sh | 25 +++++++++++++++++-------- 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index 09310fc..705ed0d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,6 +7,11 @@ RUN npm ci FROM node:20-bookworm-slim AS builder WORKDIR /app +ARG NEXT_PUBLIC_SUPABASE_URL +ARG NEXT_PUBLIC_SUPABASE_ANON_KEY +ENV NEXT_PUBLIC_SUPABASE_URL=${NEXT_PUBLIC_SUPABASE_URL} +ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=${NEXT_PUBLIC_SUPABASE_ANON_KEY} + COPY --from=deps /app/node_modules ./node_modules COPY . . RUN npm run build diff --git a/Jenkinsfile b/Jenkinsfile index a308a64..4eaac19 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -12,6 +12,8 @@ pipeline { APP_USER = "${env.APP_USER ?: 'deploy'}" DEPLOY_PATH = "${env.DEPLOY_PATH ?: '/opt/plesk-agency-portal'}" APP_BASE_URL = "${env.APP_BASE_URL ?: 'http://192.168.68.89:3000'}" + NEXT_PUBLIC_SUPABASE_URL = "${env.NEXT_PUBLIC_SUPABASE_URL ?: ''}" + NEXT_PUBLIC_SUPABASE_ANON_KEY = "${env.NEXT_PUBLIC_SUPABASE_ANON_KEY ?: ''}" } @@ -68,7 +70,7 @@ pipeline { stage('Build Docker image') { steps { - sh 'docker build -t ${IMAGE_LATEST} -t ${IMAGE_BUILD} .' + sh 'docker build --build-arg NEXT_PUBLIC_SUPABASE_URL="${NEXT_PUBLIC_SUPABASE_URL}" --build-arg NEXT_PUBLIC_SUPABASE_ANON_KEY="${NEXT_PUBLIC_SUPABASE_ANON_KEY}" -t ${IMAGE_LATEST} -t ${IMAGE_BUILD} .' } } diff --git a/scripts/smoke-check.sh b/scripts/smoke-check.sh index 5249abb..e62d440 100755 --- a/scripts/smoke-check.sh +++ b/scripts/smoke-check.sh @@ -11,17 +11,26 @@ fi URL="${BASE_URL%/}/api/health" TMP_FILE="$(mktemp)" +MAX_ATTEMPTS=20 +SLEEP_SECONDS=3 trap 'rm -f "${TMP_FILE}"' EXIT -HTTP_CODE=$(curl -sS -o "${TMP_FILE}" -w "%{http_code}" "${URL}") +for attempt in $(seq 1 "${MAX_ATTEMPTS}"); do + HTTP_CODE=$(curl -sS -o "${TMP_FILE}" -w "%{http_code}" "${URL}" || echo "000") -if [ "${HTTP_CODE}" != "200" ]; then - echo "Smoke check failed: ${URL} returned ${HTTP_CODE}" >&2 - cat "${TMP_FILE}" >&2 || true - exit 1 -fi + if [ "${HTTP_CODE}" = "200" ]; then + if node -e "const fs=require('fs');const d=JSON.parse(fs.readFileSync(process.argv[1],'utf8'));if(d?.ok!==true||typeof d?.service!=='string'){process.exit(1)}" "${TMP_FILE}"; then + echo "Smoke check passed: ${URL} (attempt ${attempt}/${MAX_ATTEMPTS})" + exit 0 + fi + fi -node -e "const fs=require('fs');const d=JSON.parse(fs.readFileSync(process.argv[1],'utf8'));if(d?.ok!==true||typeof d?.service!=='string'){process.exit(1)}" "${TMP_FILE}" + if [ "${attempt}" -lt "${MAX_ATTEMPTS}" ]; then + sleep "${SLEEP_SECONDS}" + fi +done -echo "Smoke check passed: ${URL}" +echo "Smoke check failed after ${MAX_ATTEMPTS} attempts: ${URL}" >&2 +cat "${TMP_FILE}" >&2 || true +exit 1 -- 2.39.5