Skip to content

Commit e2f6517

Browse files
committed
improve: enhance deployment script with better job waiting and error handling
- Add pgstac-migrate job completion waiting with timeout - Improve deployment verification with pod status checks - Add better error logging and debugging output - Enhanced deployment flow reliability
1 parent 44b390c commit e2f6517

File tree

1 file changed

+60
-1
lines changed

1 file changed

+60
-1
lines changed

scripts/deploy.sh

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,67 @@ deploy_eoapi() {
164164
log_info "Verifying deployment..."
165165
kubectl get pods -n "$NAMESPACE" -o wide
166166

167+
# Wait for pgstac jobs to complete first
168+
if kubectl get job -n "$NAMESPACE" -l "app=$RELEASE_NAME-pgstac-migrate" >/dev/null 2>&1; then
169+
log_info "Waiting for pgstac-migrate job to complete..."
170+
if ! kubectl wait --for=condition=complete job -l "app=$RELEASE_NAME-pgstac-migrate" -n "$NAMESPACE" --timeout=600s; then
171+
log_error "pgstac-migrate job failed to complete"
172+
kubectl describe job -l "app=$RELEASE_NAME-pgstac-migrate" -n "$NAMESPACE"
173+
kubectl logs -l "app=$RELEASE_NAME-pgstac-migrate" -n "$NAMESPACE" --tail=50 || true
174+
exit 1
175+
fi
176+
fi
177+
178+
if kubectl get job -n "$NAMESPACE" -l "app=$RELEASE_NAME-pgstac-load-samples" >/dev/null 2>&1; then
179+
log_info "Waiting for pgstac-load-samples job to complete..."
180+
if ! kubectl wait --for=condition=complete job -l "app=$RELEASE_NAME-pgstac-load-samples" -n "$NAMESPACE" --timeout=300s; then
181+
log_error "pgstac-load-samples job failed to complete"
182+
kubectl describe job -l "app=$RELEASE_NAME-pgstac-load-samples" -n "$NAMESPACE"
183+
kubectl logs -l "app=$RELEASE_NAME-pgstac-load-samples" -n "$NAMESPACE" --tail=50 || true
184+
exit 1
185+
fi
186+
fi
187+
188+
# Wait for service pods to be ready
189+
log_info "Waiting for eoAPI services to be ready..."
190+
local services=("stac" "raster" "vector")
191+
local failed_services=()
192+
193+
for service in "${services[@]}"; do
194+
# Try different label patterns to find pods
195+
local found=false
196+
local patterns=(
197+
"app.kubernetes.io/instance=$RELEASE_NAME,app.kubernetes.io/name=$service"
198+
"app=$RELEASE_NAME-$service"
199+
)
200+
201+
for pattern in "${patterns[@]}"; do
202+
if kubectl get pods -n "$NAMESPACE" -l "$pattern" >/dev/null 2>&1; then
203+
log_info "Waiting for $service service pods to be ready..."
204+
if kubectl wait --for=condition=Ready pod -l "$pattern" -n "$NAMESPACE" --timeout=300s; then
205+
found=true
206+
break
207+
else
208+
log_warn "$service service pods found but failed readiness check"
209+
kubectl describe pods -n "$NAMESPACE" -l "$pattern" || true
210+
fi
211+
fi
212+
done
213+
214+
if [ "$found" = false ]; then
215+
failed_services+=("$service")
216+
fi
217+
done
218+
219+
if [ ${#failed_services[@]} -ne 0 ]; then
220+
log_error "Failed to start services: ${failed_services[*]}"
221+
kubectl get pods -n "$NAMESPACE" -o wide
222+
kubectl get events -n "$NAMESPACE" --sort-by='.lastTimestamp' | tail -20 || true
223+
exit 1
224+
fi
225+
167226
log_info "eoAPI deployment completed successfully!"
168-
log_info "Services available in namespace: $NAMESPACE"
227+
log_info "All services are ready in namespace: $NAMESPACE"
169228

170229
if [ "$CI_MODE" != true ]; then
171230
log_info "To run integration tests: make integration"

0 commit comments

Comments
 (0)