1- name : EC2-READ-DIAGNOSTIC
1+ name : EC2-READ-DEPLOY-LOG
22
33on :
44 workflow_dispatch :
55
66jobs :
7- read-diag :
8- name : Read S3 Diagnostic
7+ read-log :
8+ name : Read CodeDeploy Logs
99 runs-on : ubuntu-latest
1010
1111 steps :
@@ -16,50 +16,38 @@ jobs:
1616 aws-secret-access-key : ${{ secrets.AWS_PROD_SECRET_KEY }}
1717 aws-region : ap-northeast-2
1818
19- - name : Check latest CodeDeploy deployment
19+ - name : Get deployment lifecycle events
2020 run : |
21- LATEST=$(aws deploy list-deployments \
21+ echo "=== 최근 배포 목록 (최대 5개) ==="
22+ DEPLOYMENTS=$(aws deploy list-deployments \
2223 --application-name runnect-prod-codedeploy \
2324 --deployment-group-name runnect-prod-codedeploy-group \
24- --query "deployments[0 ]" \
25+ --query "deployments[:5 ]" \
2526 --output text 2>/dev/null)
26- echo "Latest deployment : $LATEST "
27+ echo "Deployments : $DEPLOYMENTS "
2728
28- aws deploy get-deployment --deployment-id "$LATEST" \
29- --query "deploymentInfo.{status:status, createTime:createTime, completeTime:completeTime}" \
30- --output json 2>&1
31-
32- - name : List S3 diagnostics
33- run : |
34- echo "=== S3 diagnostics 폴더 ==="
35- aws s3 ls s3://runnect-prod-bucket/diagnostics/ 2>&1 || echo "diagnostics 폴더 없거나 접근 불가"
36-
37- echo ""
38- echo "=== S3 버킷 전체 목록 ==="
39- aws s3 ls s3://runnect-prod-bucket/ 2>&1 || echo "S3 접근 실패"
29+ for DEP_ID in $DEPLOYMENTS; do
30+ echo ""
31+ echo "================================================"
32+ echo "=== Deployment: $DEP_ID ==="
33+ echo "================================================"
4034
41- - name : Download and display diagnostic file
42- run : |
43- echo "=== 진단 파일 다운로드 시도 ==="
44- LATEST_FILE=$(aws s3 ls s3://runnect-prod-bucket/diagnostics/ --recursive 2>/dev/null | sort | tail -1 | awk '{print $4}')
35+ aws deploy get-deployment --deployment-id "$DEP_ID" \
36+ --query "deploymentInfo.{status:status, createTime:createTime, completeTime:completeTime, error:errorInformation}" \
37+ --output json 2>&1
4538
46- if [ -n "$LATEST_FILE" ]; then
47- echo "Found: $LATEST_FILE"
48- aws s3 cp "s3://runnect-prod-bucket/$LATEST_FILE" /tmp/diagnostic.txt 2>&1
49- echo ""
50- echo "=== DIAGNOSTIC CONTENTS ==="
51- cat /tmp/diagnostic.txt
52- else
53- echo "진단 파일이 없습니다."
5439 echo ""
55- echo "S3에 직접 접근하여 모든 파일 확인..."
56- aws s3 ls s3://runnect-prod-bucket/ --recursive 2>&1 | tail -20
57- fi
58-
59- - name : Health check from GitHub Actions
60- run : |
61- echo "=== External Health Check ==="
62- for PORT in 80 8081 8082; do
63- HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 5 --max-time 10 http://3.35.195.11:$PORT/actuator/health 2>/dev/null || echo "000")
64- echo "Port $PORT: HTTP $HTTP_CODE"
40+ echo "--- Instance lifecycle events ---"
41+ INSTANCES=$(aws deploy list-deployment-instances \
42+ --deployment-id "$DEP_ID" \
43+ --query "instancesList" \
44+ --output text 2>/dev/null)
45+
46+ for INST in $INSTANCES; do
47+ echo "Instance: $INST"
48+ aws deploy get-deployment-instance \
49+ --deployment-id "$DEP_ID" \
50+ --instance-id "$INST" \
51+ --output json 2>&1
52+ done
6553 done
0 commit comments