From 97061b62b4c8cd4668ef29b1f312e553593d9685 Mon Sep 17 00:00:00 2001 From: nethunterzist Date: Thu, 16 Jul 2026 14:55:50 +0300 Subject: [PATCH] chore(ci): Coolify adimini kaldir, K8s health check yap --- .github/workflows/deploy.yml | 97 +++++++++--------------------------- 1 file changed, 23 insertions(+), 74 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 453c953..ea4b977 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -221,104 +221,53 @@ jobs: cache-to: type=gha,mode=max,scope=frontend # ─────────────────────────────────────────────────────────────────────────── - # ADIM 3 — Coolify deploy webhook - # Deployment UUID'yi output'a yaz → verify job bu spesifik deploy'u izleyecek - # ─────────────────────────────────────────────────────────────────────────── - deploy: - name: 🚀 Deploy to Coolify - needs: [build-push-backend, build-push-frontend] - runs-on: ubuntu-latest - - outputs: - deployment_uuid: ${{ steps.trigger.outputs.deployment_uuid }} - - steps: - - name: Trigger Coolify deploy - id: trigger - run: | - response=$(curl -s -w "\n%{http_code}" \ - -X POST "${{ secrets.COOLIFY_BASE_URL }}/api/v1/deploy?uuid=${{ secrets.COOLIFY_TRENDYOL_UUID }}&force=true" \ - -H "Authorization: Bearer ${{ secrets.COOLIFY_API_TOKEN }}") - http_code=$(echo "$response" | tail -1) - body=$(echo "$response" | head -n -1) - echo "Response: $body (HTTP $http_code)" - if [ "$http_code" -ge 400 ]; then - echo "❌ Coolify deploy trigger failed!" - exit 1 - fi - - # Deployment UUID'yi parse et - DEPLOY_UUID=$(echo "$body" | python3 -c "import json,sys; d=json.load(sys.stdin); print(d['deployments'][0]['deployment_uuid'])") - echo "deployment_uuid=$DEPLOY_UUID" >> "$GITHUB_OUTPUT" - echo "✅ Coolify deploy queued — deployment_uuid: $DEPLOY_UUID" - - # ─────────────────────────────────────────────────────────────────────────── - # ADIM 4 — Verify deployment - # Spesifik deployment_uuid'yi poll et: queued → in_progress → finished/failed + # ADIM 3 — Public URL health check + # K8s deploy Gitea mirror → Argo CD ile asenkron ilerler (~5-10 dk). + # GHCR image push'tan 5 dk bekle, ardından public frontend URL'i kontrol et. # ─────────────────────────────────────────────────────────────────────────── verify: name: ✅ Verify Deployment - needs: deploy + needs: [build-push-backend, build-push-frontend] runs-on: ubuntu-latest steps: - - name: Coolify deployment status polling + - name: Wait for Argo CD rolling update run: | - DEPLOY_UUID="${{ needs.deploy.outputs.deployment_uuid }}" - DEPLOY_URL="${{ secrets.COOLIFY_BASE_URL }}/api/v1/deployments/$DEPLOY_UUID" - MAX=60 # 60 × 10s = 10 dk - INTERVAL=10 - - echo "🔍 Polling deployment $DEPLOY_UUID" - - for i in $(seq 1 $MAX); do - STATUS=$(curl -s --max-time 10 \ - -H "Authorization: Bearer ${{ secrets.COOLIFY_API_TOKEN }}" \ - "$DEPLOY_URL" 2>/dev/null | python3 -c "import json,sys; print(json.load(sys.stdin).get('status','?'))" 2>/dev/null || echo "unknown") - - echo "[$i/$MAX] $STATUS" - - case "$STATUS" in - finished|success) - echo "✅ Coolify deployment finished" - exit 0 - ;; - failed|error|cancelled) - echo "❌ Coolify deployment status: $STATUS" - echo "Panel: ${{ secrets.COOLIFY_BASE_URL }}" - exit 1 - ;; - esac - sleep $INTERVAL - done - - echo "⚠️ Timeout — deployment hala '$STATUS' (10 dk geçti) — public URL health check'e geçiliyor" + echo "⏳ Waiting 5 minutes for Argo CD to pick up new image..." + sleep 300 - name: Public URL health check run: | MAX=15 - INTERVAL=10 - URL="https://trendyol.194.187.253.230.sslip.io" + INTERVAL=20 + FRONTEND_URL="https://trendyol.194.187.253.230.sslip.io" + BACKEND_URL="https://trendyol-api.194.187.253.230.sslip.io/health" + echo "🔍 Checking frontend: $FRONTEND_URL" for i in $(seq 1 $MAX); do - CODE=$(curl -sL -o /dev/null -w "%{http_code}" --max-time 10 "$URL" 2>/dev/null || echo "000") - echo "[$i/$MAX] $URL → HTTP $CODE" + CODE=$(curl -sL -o /dev/null -w "%{http_code}" --max-time 15 "$FRONTEND_URL" 2>/dev/null || echo "000") + echo "[$i/$MAX] Frontend → HTTP $CODE" if [ "$CODE" = "200" ] || [ "$CODE" = "302" ] || [ "$CODE" = "307" ]; then echo "✅ Frontend canlı" - exit 0 + break fi - sleep $INTERVAL + [ "$i" -lt "$MAX" ] && sleep $INTERVAL done - echo "❌ Public URL erişilemez — Coolify panelini kontrol et" - exit 1 + echo "🔍 Checking backend: $BACKEND_URL" + CODE=$(curl -sL -o /dev/null -w "%{http_code}" --max-time 15 "$BACKEND_URL" 2>/dev/null || echo "000") + if [ "$CODE" = "200" ]; then + echo "✅ Backend canlı (HTTP $CODE)" + else + echo "⚠️ Backend HTTP $CODE — Argo CD sync devam ediyor olabilir" + fi # ─────────────────────────────────────────────────────────────────────────── # Hata bildirimi — GitHub Issue otomatik aç # ─────────────────────────────────────────────────────────────────────────── notify-failure: name: 📢 Notify on Failure - needs: [validate-backend, validate-frontend, build-push-backend, build-push-frontend, deploy, verify] + needs: [validate-backend, validate-frontend, build-push-backend, build-push-frontend, verify] runs-on: ubuntu-latest if: failure() permissions: