99env :
1010 REGISTRY : crretoxmas2024.azurecr.io
1111 NAMESPACE : reto-xmas-2025-goland-ia-backend
12- DEPLOY_TIMEOUT : 8m
12+ ROLLOUT_TIMEOUT : 60s
13+ READY_CHECK_RETRIES : 20
14+ READY_CHECK_SLEEP : 15
1315
1416jobs :
1517 build-and-deploy :
2729 path : ./RAGManager
2830 image : reto-xmas-2025-goland-ia-backend-rag-manager
2931 deployment : rag-manager
30-
32+
3133 steps :
3234 - name : Checkout code
3335 uses : actions/checkout@v4
@@ -72,47 +74,69 @@ jobs:
7274 api=${{ env.REGISTRY }}/${{ matrix.service.image }}:${{ github.sha }} \
7375 -n ${{ env.NAMESPACE }}
7476
75- - name : Wait for deployment rollout
77+ - name : Wait for deployment to be ready (robust)
7678 run : |
77- echo "Waiting for deployment rollout to complete..."
78- kubectl rollout status deployment/${{ matrix.service.deployment }} -n ${{ env.NAMESPACE }} --timeout=${{ env.DEPLOY_TIMEOUT }}
79- kubectl get deployment/${{ matrix.service.deployment }} -n ${{ env.NAMESPACE }}
80- kubectl get pods -n ${{ env.NAMESPACE }} -l app=${{ matrix.service.deployment }}
79+ set -e
80+
81+ echo "Checking rollout status (non-blocking)..."
82+ kubectl rollout status deployment/${{ matrix.service.deployment }} \
83+ -n ${{ env.NAMESPACE }} \
84+ --timeout=${{ env.ROLLOUT_TIMEOUT }} || true
85+
86+ echo "Waiting for available replicas..."
87+
88+ for i in $(seq 1 $READY_CHECK_RETRIES); do
89+ DESIRED=$(kubectl get deployment/${{ matrix.service.deployment }} -n ${{ env.NAMESPACE }} -o jsonpath='{.spec.replicas}')
90+ AVAILABLE=$(kubectl get deployment/${{ matrix.service.deployment }} -n ${{ env.NAMESPACE }} -o jsonpath='{.status.availableReplicas}')
91+
92+ echo "Attempt $i: $AVAILABLE / $DESIRED replicas available"
93+
94+ if [ "$AVAILABLE" = "$DESIRED" ]; then
95+ echo "Deployment is ready"
96+ exit 0
97+ fi
8198
82- - name : Verify deployment
99+ sleep $READY_CHECK_SLEEP
100+ done
101+
102+ echo "Deployment did not become ready in time"
103+ kubectl describe deployment/${{ matrix.service.deployment }} -n ${{ env.NAMESPACE }}
104+ exit 1
105+
106+ - name : Verify pods
83107 if : success()
84108 run : |
85- echo "Deployment successful for ${{ matrix.service.name }}"
86- kubectl get pods -n ${{ env.NAMESPACE }} -l app=${{ matrix.service.deployment }}
109+ kubectl get pods -n ${{ env.NAMESPACE }} -l app=${{ matrix.service.deployment }} -o wide
87110
88111 - name : Get logs on failure
89112 if : failure()
90113 run : |
114+ echo "=== Deployment ==="
115+ kubectl describe deployment/${{ matrix.service.deployment }} -n ${{ env.NAMESPACE }}
116+
117+ echo "=== Pods ==="
118+ kubectl get pods -n ${{ env.NAMESPACE }} -l app=${{ matrix.service.deployment }} -o wide
119+
91120 echo "=== Pod Logs ==="
92121 kubectl logs -n ${{ env.NAMESPACE }} \
93122 -l app=${{ matrix.service.deployment }} \
94123 --tail=100 \
95124 --all-containers=true \
96- --prefix=true || echo "Could not fetch logs"
125+ --prefix=true || true
97126
98127 - name : Deployment Summary
99128 if : always()
100129 run : |
101130 STATUS="${{ job.status }}"
102-
131+
103132 echo "### Deployment - ${{ matrix.service.name }}" >> $GITHUB_STEP_SUMMARY
104133 echo "" >> $GITHUB_STEP_SUMMARY
105134 echo "| Property | Value |" >> $GITHUB_STEP_SUMMARY
106135 echo "|----------|-------|" >> $GITHUB_STEP_SUMMARY
107136 echo "| Image | \`${{ env.REGISTRY }}/${{ matrix.service.image }}:${{ github.sha }}\` |" >> $GITHUB_STEP_SUMMARY
108-
109- if [ "$STATUS" == "success" ]; then
110- echo "| Status | Success |" >> $GITHUB_STEP_SUMMARY
111- else
112- echo "| Status | Failed |" >> $GITHUB_STEP_SUMMARY
113- fi
114-
137+ echo "| Status | $STATUS |" >> $GITHUB_STEP_SUMMARY
115138 echo "" >> $GITHUB_STEP_SUMMARY
139+
116140 echo "#### Pods:" >> $GITHUB_STEP_SUMMARY
117141 echo '```' >> $GITHUB_STEP_SUMMARY
118142 kubectl get pods -n ${{ env.NAMESPACE }} -l app=${{ matrix.service.deployment }} >> $GITHUB_STEP_SUMMARY || true
@@ -126,7 +150,7 @@ jobs:
126150 steps :
127151 - name : Success Summary
128152 run : |
129- echo "### ll Services Deployed! " >> $GITHUB_STEP_SUMMARY
153+ echo "### All Services Deployed" >> $GITHUB_STEP_SUMMARY
130154 echo "" >> $GITHUB_STEP_SUMMARY
131155 echo "**Live URLs:**" >> $GITHUB_STEP_SUMMARY
132156 echo "- [DocsManager](https://goland-ia-backend-docs-manager.reto-ucu.net/docs)" >> $GITHUB_STEP_SUMMARY
@@ -142,4 +166,4 @@ jobs:
142166 run : |
143167 echo "### Deployment Failed" >> $GITHUB_STEP_SUMMARY
144168 echo "" >> $GITHUB_STEP_SUMMARY
145- echo "Automatic rollback initiated " >> $GITHUB_STEP_SUMMARY
169+ echo "Please check deployment logs above. " >> $GITHUB_STEP_SUMMARY
0 commit comments