fix deploy.sh: correct API endpoints and git URL patching

This commit is contained in:
TenX PM
2026-05-09 20:30:26 +00:00
parent 5b089c9b77
commit 6ab63c8668
+34 -17
View File
@@ -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