-
Notifications
You must be signed in to change notification settings - Fork 0
99 lines (86 loc) Β· 3.64 KB
/
Copy pathec2-reboot.yml
File metadata and controls
99 lines (86 loc) Β· 3.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
name: EC2-RECOVERY
on:
workflow_dispatch:
jobs:
recover:
name: Recover Server
runs-on: ubuntu-latest
steps:
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_PROD_ACCESS_KEY }}
aws-secret-access-key: ${{ secrets.AWS_PROD_SECRET_KEY }}
aws-region: ap-northeast-2
- name: Check IAM identity
run: |
echo "=== IAM μ 보 νμΈ ==="
aws sts get-caller-identity || echo "STS νΈμΆ μ€ν¨"
- name: Check CodeDeploy deployments
run: |
echo "=== μ΅κ·Ό λ°°ν¬ μν νμΈ ==="
aws deploy list-deployments \
--application-name runnect-prod-codedeploy \
--deployment-group-name runnect-prod-codedeploy-group \
--include-only-statuses "Succeeded,Failed,InProgress" \
--query "deployments[:3]" \
--output text || echo "λ°°ν¬ λͺ©λ‘ μ‘°ν μ€ν¨"
LATEST=$(aws deploy list-deployments \
--application-name runnect-prod-codedeploy \
--deployment-group-name runnect-prod-codedeploy-group \
--query "deployments[0]" \
--output text 2>/dev/null)
if [ -n "$LATEST" ] && [ "$LATEST" != "None" ]; then
echo ""
echo "=== μ΅μ λ°°ν¬ μμΈ ==="
aws deploy get-deployment --deployment-id "$LATEST" \
--query "deploymentInfo.{status:status, createTime:createTime, completeTime:completeTime, errorInfo:errorInformation}" \
--output json
fi
- name: Trigger new CodeDeploy deployment
run: |
echo "=== μ CodeDeploy λ°°ν¬ νΈλ¦¬κ±° ==="
DEPLOYMENT_ID=$(aws deploy create-deployment \
--application-name runnect-prod-codedeploy \
--deployment-group-name runnect-prod-codedeploy-group \
--file-exists-behavior OVERWRITE \
--s3-location bucket=runnect-prod-bucket,bundleType=zip,key=runnect_prod_server.zip \
--region ap-northeast-2 \
--query "deploymentId" \
--output text)
echo "Deployment ID: $DEPLOYMENT_ID"
echo "λ°°ν¬ μλ£ λκΈ° (μ΅λ 5λΆ)..."
for i in $(seq 1 30); do
STATUS=$(aws deploy get-deployment --deployment-id "$DEPLOYMENT_ID" \
--query "deploymentInfo.status" --output text 2>/dev/null)
echo "[$i/30] Status: $STATUS"
if [ "$STATUS" = "Succeeded" ]; then
echo "λ°°ν¬ μ±κ³΅!"
break
elif [ "$STATUS" = "Failed" ] || [ "$STATUS" = "Stopped" ]; then
echo "λ°°ν¬ μ€ν¨! μμΈ μ 보:"
aws deploy get-deployment --deployment-id "$DEPLOYMENT_ID" \
--query "deploymentInfo.errorInformation" --output json
break
fi
sleep 10
done
- name: Health check
run: |
echo "μλ² ν¬μ€ μ²΄ν¬ (μ΅λ 3λΆ λκΈ°)..."
for i in $(seq 1 18); do
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 5 --max-time 10 http://3.35.195.11/actuator/health 2>/dev/null || echo "000")
echo "[$i/18] HTTP: $HTTP_CODE"
if [ "$HTTP_CODE" = "200" ]; then
echo "μλ² λ³΅κ΅¬ μλ£!"
exit 0
fi
sleep 10
done
echo ""
echo "=== ν¬νΈλ³ μ²΄ν¬ ==="
for PORT in 80 8081 8082; do
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")
echo "Port $PORT: HTTP $HTTP_CODE"
done
echo "WARNING: μλ²κ° μμ§ μλ΅νμ§ μμ΅λλ€."