ci: 배포 실패 시 pod 로그 / k8s events 자동 캡처
Build & Deploy to K8s / build-and-deploy (push) Failing after 3m22s
Build & Deploy to K8s / build-and-deploy (push) Failing after 3m22s
backend-spring rollout 이 180초 timeout 으로 실패할 때, Gitea Actions 로그에는 timeout 메시지만 나오고 정작 Spring Boot 부팅 단계의 진짜 에러는 pod 안 stdout 에 갇혀 있어서 디버깅 불가. - if: failure() 조건으로 마지막에 Diagnose step 추가 - kubectl get pods, describe, logs (current + previous), events 출력 - frontend 도 참고용 200줄 출력 - 모든 명령 || true 로 감싸서 진단 자체가 실패해도 다음 단계 진행 이 step 은 진짜 원인 파악되고 안정화되면 제거 예정. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -70,3 +70,44 @@ jobs:
|
||||
# Rollout 상태 확인
|
||||
kubectl rollout status deployment/backend-spring -n invyone --timeout=180s
|
||||
kubectl rollout status deployment/frontend -n invyone --timeout=120s
|
||||
|
||||
# ---- 실패 시 진단 (pod stdout / events 캡처) ----
|
||||
- name: Diagnose on failure
|
||||
if: failure()
|
||||
run: |
|
||||
export KUBECONFIG=/home/chpark/.kube/config
|
||||
echo "============================================"
|
||||
echo "=== Pods (-n invyone) ==="
|
||||
echo "============================================"
|
||||
kubectl get pods -n invyone -o wide || true
|
||||
|
||||
echo
|
||||
echo "============================================"
|
||||
echo "=== backend-spring describe ==="
|
||||
echo "============================================"
|
||||
kubectl describe deployment backend-spring -n invyone || true
|
||||
kubectl describe pods -n invyone -l app=backend-spring | tail -120 || true
|
||||
|
||||
echo
|
||||
echo "============================================"
|
||||
echo "=== backend-spring CURRENT logs (tail 400) ==="
|
||||
echo "============================================"
|
||||
kubectl logs -n invyone deployment/backend-spring --tail=400 --all-containers=true || true
|
||||
|
||||
echo
|
||||
echo "============================================"
|
||||
echo "=== backend-spring PREVIOUS logs (crashed pod, tail 400) ==="
|
||||
echo "============================================"
|
||||
kubectl logs -n invyone deployment/backend-spring --tail=400 --previous --all-containers=true || true
|
||||
|
||||
echo
|
||||
echo "============================================"
|
||||
echo "=== frontend logs (참고, tail 200) ==="
|
||||
echo "============================================"
|
||||
kubectl logs -n invyone deployment/frontend --tail=200 --all-containers=true || true
|
||||
|
||||
echo
|
||||
echo "============================================"
|
||||
echo "=== Recent Warning events ==="
|
||||
echo "============================================"
|
||||
kubectl get events -n invyone --sort-by='.lastTimestamp' --field-selector type=Warning 2>/dev/null | tail -30 || true
|
||||
|
||||
Reference in New Issue
Block a user