mirror of
https://github.com/nethunterzist/trendyol-analiz
synced 2026-08-29 21:38:00 +00:00
chore(ci): Coolify adimini kaldir, K8s health check yap
This commit is contained in:
97
.github/workflows/deploy.yml
vendored
97
.github/workflows/deploy.yml
vendored
@@ -221,104 +221,53 @@ jobs:
|
|||||||
cache-to: type=gha,mode=max,scope=frontend
|
cache-to: type=gha,mode=max,scope=frontend
|
||||||
|
|
||||||
# ───────────────────────────────────────────────────────────────────────────
|
# ───────────────────────────────────────────────────────────────────────────
|
||||||
# ADIM 3 — Coolify deploy webhook
|
# ADIM 3 — Public URL health check
|
||||||
# Deployment UUID'yi output'a yaz → verify job bu spesifik deploy'u izleyecek
|
# 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.
|
||||||
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
|
|
||||||
# ───────────────────────────────────────────────────────────────────────────
|
# ───────────────────────────────────────────────────────────────────────────
|
||||||
verify:
|
verify:
|
||||||
name: ✅ Verify Deployment
|
name: ✅ Verify Deployment
|
||||||
needs: deploy
|
needs: [build-push-backend, build-push-frontend]
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Coolify deployment status polling
|
- name: Wait for Argo CD rolling update
|
||||||
run: |
|
run: |
|
||||||
DEPLOY_UUID="${{ needs.deploy.outputs.deployment_uuid }}"
|
echo "⏳ Waiting 5 minutes for Argo CD to pick up new image..."
|
||||||
DEPLOY_URL="${{ secrets.COOLIFY_BASE_URL }}/api/v1/deployments/$DEPLOY_UUID"
|
sleep 300
|
||||||
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"
|
|
||||||
|
|
||||||
- name: Public URL health check
|
- name: Public URL health check
|
||||||
run: |
|
run: |
|
||||||
MAX=15
|
MAX=15
|
||||||
INTERVAL=10
|
INTERVAL=20
|
||||||
URL="https://trendyol.194.187.253.230.sslip.io"
|
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
|
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")
|
CODE=$(curl -sL -o /dev/null -w "%{http_code}" --max-time 15 "$FRONTEND_URL" 2>/dev/null || echo "000")
|
||||||
echo "[$i/$MAX] $URL → HTTP $CODE"
|
echo "[$i/$MAX] Frontend → HTTP $CODE"
|
||||||
if [ "$CODE" = "200" ] || [ "$CODE" = "302" ] || [ "$CODE" = "307" ]; then
|
if [ "$CODE" = "200" ] || [ "$CODE" = "302" ] || [ "$CODE" = "307" ]; then
|
||||||
echo "✅ Frontend canlı"
|
echo "✅ Frontend canlı"
|
||||||
exit 0
|
break
|
||||||
fi
|
fi
|
||||||
sleep $INTERVAL
|
[ "$i" -lt "$MAX" ] && sleep $INTERVAL
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "❌ Public URL erişilemez — Coolify panelini kontrol et"
|
echo "🔍 Checking backend: $BACKEND_URL"
|
||||||
exit 1
|
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ç
|
# Hata bildirimi — GitHub Issue otomatik aç
|
||||||
# ───────────────────────────────────────────────────────────────────────────
|
# ───────────────────────────────────────────────────────────────────────────
|
||||||
notify-failure:
|
notify-failure:
|
||||||
name: 📢 Notify on 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
|
runs-on: ubuntu-latest
|
||||||
if: failure()
|
if: failure()
|
||||||
permissions:
|
permissions:
|
||||||
|
|||||||
Reference in New Issue
Block a user