99env :
1010 REGISTRY : crretoxmas2024.azurecr.io
1111 NAMESPACE : reto-xmas-2025-goland-ia-backend
12+ DEPLOY_TIMEOUT : 3m
1213
1314jobs :
1415 build-and-deploy :
1516 runs-on : ubuntu-latest
17+ timeout-minutes : 15
1618 strategy :
1719 fail-fast : false
1820 matrix :
5153 ${{ env.REGISTRY }}/${{ matrix.service.image }}:${{ github.sha }}
5254 cache-from : type=registry,ref=${{ env.REGISTRY }}/${{ matrix.service.image }}:buildcache
5355 cache-to : type=registry,ref=${{ env.REGISTRY }}/${{ matrix.service.image }}:buildcache,mode=max
56+ provenance : false
5457
5558 - name : Set up kubectl
5659 uses : azure/setup-kubectl@v3
@@ -63,28 +66,66 @@ jobs:
6366 echo "${{ secrets.KUBECONFIG }}" | base64 -d > $HOME/.kube/config
6467 chmod 600 $HOME/.kube/config
6568
66- - name : Restart deployment
69+ - name : Update deployment image
6770 run : |
68- kubectl rollout restart deployment/${{ matrix.service.deployment }} -n ${{ env.NAMESPACE }}
69- kubectl rollout status deployment/${{ matrix.service.deployment }} -n ${{ env.NAMESPACE }} --timeout=5m
71+ kubectl set image deployment/${{ matrix.service.deployment }} \
72+ api=${{ env.REGISTRY }}/${{ matrix.service.image }}:${{ github.sha }} \
73+ -n ${{ env.NAMESPACE }}
74+
75+ - name : Wait for rollout
76+ timeout-minutes : 5
77+ run : |
78+ kubectl rollout status deployment/${{ matrix.service.deployment }} \
79+ -n ${{ env.NAMESPACE }} \
80+ --timeout=${{ env.DEPLOY_TIMEOUT }} || {
81+ echo "Deployment failed or timed out"
82+ kubectl get pods -n ${{ env.NAMESPACE }} -l app=${{ matrix.service.deployment }}
83+ exit 1
84+ }
7085
7186 - name : Verify deployment
87+ if : success()
7288 run : |
73- echo "✅ Deployment successful for ${{ matrix.service.name }}"
89+ echo "Deployment successful for ${{ matrix.service.name }}"
7490 kubectl get pods -n ${{ env.NAMESPACE }} -l app=${{ matrix.service.deployment }}
7591
92+ - name : Get logs on failure
93+ if : failure()
94+ run : |
95+ echo "=== Pod Logs ==="
96+ kubectl logs -n ${{ env.NAMESPACE }} \
97+ -l app=${{ matrix.service.deployment }} \
98+ --tail=100 \
99+ --all-containers=true \
100+ --prefix=true || echo "Could not fetch logs"
101+
102+ - name : Rollback on failure
103+ if : failure()
104+ run : |
105+ echo "Rolling back deployment"
106+ kubectl rollout undo deployment/${{ matrix.service.deployment }} -n ${{ env.NAMESPACE }}
107+
76108 - name : Deployment Summary
77109 if : always()
78110 run : |
79- echo "### 🚀 Deployment Summary" >> $GITHUB_STEP_SUMMARY
111+ STATUS="${{ job.status }}"
112+
113+ echo "### Deployment - ${{ matrix.service.name }}" >> $GITHUB_STEP_SUMMARY
80114 echo "" >> $GITHUB_STEP_SUMMARY
81- echo "**Service:** ${{ matrix.service.name }}" >> $GITHUB_STEP_SUMMARY
82- echo "**Image:** ${{ env.REGISTRY }}/${{ matrix.service.image }}:${{ github.sha }}" >> $GITHUB_STEP_SUMMARY
83- echo "**Status:** ${{ job.status }}" >> $GITHUB_STEP_SUMMARY
115+ echo "| Property | Value |" >> $GITHUB_STEP_SUMMARY
116+ echo "|----------|-------|" >> $GITHUB_STEP_SUMMARY
117+ echo "| Image | \`${{ env.REGISTRY }}/${{ matrix.service.image }}:${{ github.sha }}\` |" >> $GITHUB_STEP_SUMMARY
118+
119+ if [ "$STATUS" == "success" ]; then
120+ echo "| Status | Success |" >> $GITHUB_STEP_SUMMARY
121+ else
122+ echo "| Status | Failed |" >> $GITHUB_STEP_SUMMARY
123+ fi
124+
84125 echo "" >> $GITHUB_STEP_SUMMARY
85126 echo "#### Pods:" >> $GITHUB_STEP_SUMMARY
86127 echo '```' >> $GITHUB_STEP_SUMMARY
87- kubectl get pods -n ${{ env.NAMESPACE }} -l app=${{ matrix.service.deployment }} >> $GITHUB_STEP_SUMMARY
128+ kubectl get pods -n ${{ env.NAMESPACE }} -l app=${{ matrix.service.deployment }} >> $GITHUB_STEP_SUMMARY || true
88129 echo '```' >> $GITHUB_STEP_SUMMARY
89130
90131 notify-success :
@@ -95,8 +136,20 @@ jobs:
95136 steps :
96137 - name : Success Summary
97138 run : |
98- echo "### ✅ Deployment Successful!" >> $GITHUB_STEP_SUMMARY
139+ echo "### ll Services Deployed!" >> $GITHUB_STEP_SUMMARY
140+ echo "" >> $GITHUB_STEP_SUMMARY
141+ echo "**Live URLs:**" >> $GITHUB_STEP_SUMMARY
142+ echo "- [DocsManager](https://goland-ia-backend-docs-manager.reto-ucu.net/docs)" >> $GITHUB_STEP_SUMMARY
143+ echo "- [RAGManager](https://goland-ia-backend-rag-manager.reto-ucu.net/docs)" >> $GITHUB_STEP_SUMMARY
144+
145+ notify-failure :
146+ name : Deployment Failed
147+ runs-on : ubuntu-latest
148+ needs : [build-and-deploy]
149+ if : failure()
150+ steps :
151+ - name : Failure Summary
152+ run : |
153+ echo "### Deployment Failed" >> $GITHUB_STEP_SUMMARY
99154 echo "" >> $GITHUB_STEP_SUMMARY
100- echo "All services deployed successfully:" >> $GITHUB_STEP_SUMMARY
101- echo "- 🌐 DocsManager: https://goland-ia-backend-docs-manager.reto-ucu.net" >> $GITHUB_STEP_SUMMARY
102- echo "- 🌐 RAGManager: https://goland-ia-backend-rag-manager.reto-ucu.net" >> $GITHUB_STEP_SUMMARY
155+ echo "Automatic rollback initiated" >> $GITHUB_STEP_SUMMARY
0 commit comments