Skip to content

Commit cf1f966

Browse files
Refactor deployment workflow to improve rollout checks and update timeout settings
1 parent 20cafba commit cf1f966

File tree

1 file changed

+45
-21
lines changed

1 file changed

+45
-21
lines changed

.github/workflows/deploy.yml

Lines changed: 45 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ on:
99
env:
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

1416
jobs:
1517
build-and-deploy:
@@ -27,7 +29,7 @@ jobs:
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

Comments
 (0)