From 6ab63c8668b601af4f18454f3ff71ed338c5fd4a Mon Sep 17 00:00:00 2001 From: TenX PM Date: Sat, 9 May 2026 20:30:26 +0000 Subject: [PATCH] fix deploy.sh: correct API endpoints and git URL patching --- deploy.sh | 51 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/deploy.sh b/deploy.sh index 7dcb00e..52b4b69 100755 --- a/deploy.sh +++ b/deploy.sh @@ -108,7 +108,7 @@ REPO_FULL_URL="${GITEA_URL}/${GITEA_USER}/${PROJECT_NAME}.git" APP_RESPONSE=$(curl -sk -X POST -H "Authorization: Bearer ${COOLIFY_ACCESS_TOKEN}" \ -H "Content-Type: application/json" \ - "${COOLIFY_API}/applications" \ + "${COOLIFY_API}/applications/public" \ -d "{ \"project_uuid\": \"${PROJECT_UUID}\", \"environment_name\": \"production\", @@ -138,33 +138,50 @@ for a in apps: print('') " 2>/dev/null) - if [ -n "${APP_UUID}" ]; then - echo "[deploy] Found existing app: ${APP_UUID}, redeploying..." - curl -sk -X POST -H "Authorization: Bearer ${COOLIFY_ACCESS_TOKEN}" \ - "${COOLIFY_API}/applications/${APP_UUID}/restart" > /dev/null - else + if [ -z "${APP_UUID}" ]; then echo "[deploy] ERROR: Could not create or find app" exit 1 fi + echo "[deploy] Found existing app: ${APP_UUID}, triggering redeploy..." fi echo "[deploy] App UUID: ${APP_UUID}" -# ── Step 8: Wait for deployment ────────────────────────────────────── -echo "[deploy] Waiting for deployment..." +# ── Step 7b: Fix git_repository URL (Coolify API strips base URL) ───── +curl -sk -X PATCH -H "Authorization: Bearer ${COOLIFY_ACCESS_TOKEN}" \ + -H "Content-Type: application/json" \ + "${COOLIFY_API}/applications/${APP_UUID}" \ + -d "{\"git_repository\": \"${REPO_FULL_URL}\"}" > /dev/null +echo "[deploy] Git repository URL set: ${REPO_FULL_URL}" + +# ── Step 8: Trigger deployment ──────────────────────────────────────── +echo "[deploy] Triggering deployment..." +DEPLOY_RESPONSE=$(curl -sk -X POST -H "Authorization: Bearer ${COOLIFY_ACCESS_TOKEN}" \ + -H "Content-Type: application/json" \ + -d "{\"uuid\":\"${APP_UUID}\"}" \ + "${COOLIFY_API}/deploy") +DEPLOYMENT_UUID=$(echo "${DEPLOY_RESPONSE}" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('deployments',[{}])[0].get('deployment_uuid',''))" 2>/dev/null) +echo "[deploy] Deployment UUID: ${DEPLOYMENT_UUID}" + +# ── Step 8b: Wait for deployment ───────────────────────────────────── +echo "[deploy] Waiting for deployment to complete..." for i in $(seq 1 30); do - sleep 10 - STATUS=$(curl -sk -H "Authorization: Bearer ${COOLIFY_ACCESS_TOKEN}" \ + sleep 15 + if [ -n "${DEPLOYMENT_UUID}" ]; then + DEP_STATUS=$(curl -sk -H "Authorization: Bearer ${COOLIFY_ACCESS_TOKEN}" \ + "${COOLIFY_API}/deployments/${DEPLOYMENT_UUID}" | python3 -c "import sys,json; print(json.load(sys.stdin).get('status','unknown'))" 2>/dev/null) + else + DEP_STATUS="unknown" + fi + APP_STATUS=$(curl -sk -H "Authorization: Bearer ${COOLIFY_ACCESS_TOKEN}" \ "${COOLIFY_API}/applications/${APP_UUID}" | python3 -c "import sys,json; print(json.load(sys.stdin).get('status','unknown'))" 2>/dev/null) - echo "[deploy] Status: ${STATUS} (attempt ${i}/30)" - if [ "${STATUS}" = "running" ]; then + echo "[deploy] Deploy: ${DEP_STATUS} | App: ${APP_STATUS} (attempt ${i}/30)" + if [ "${DEP_STATUS}" = "finished" ] || echo "${APP_STATUS}" | grep -q "running"; then + echo "[deploy] Deployment successful!" break fi - if [ "${STATUS}" = "exited" ] || [ "${STATUS}" = "error" ]; then - echo "[deploy] Deployment failed with status: ${STATUS}" - # Get logs - curl -sk -H "Authorization: Bearer ${COOLIFY_ACCESS_TOKEN}" \ - "${COOLIFY_API}/applications/${APP_UUID}/logs" 2>/dev/null | tail -20 + if [ "${DEP_STATUS}" = "failed" ]; then + echo "[deploy] Deployment FAILED. Check Coolify dashboard for logs." exit 1 fi done