Skip to content

Commit f9715de

Browse files
authored
chore(deployment): Update deployment script (#280)
1 parent 1a43482 commit f9715de

3 files changed

Lines changed: 81 additions & 18 deletions

File tree

‎.github/workflows/cd-dev.yml‎

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,19 +46,40 @@ jobs:
4646
echo "cmd_id=$CMD_ID" >> "$GITHUB_OUTPUT"
4747
4848
- name: Wait for SSM command to finish
49+
timeout-minutes: 20
4950
env:
5051
INSTANCE_ID: ${{ secrets.EC2_STAGING_INSTANCE_ID }}
5152
CMD_ID: ${{ steps.ssm.outputs.cmd_id }}
5253
run: |
53-
WAIT_EXIT=0
54-
aws ssm wait command-executed \
55-
--command-id "$CMD_ID" \
56-
--instance-id "$INSTANCE_ID" || WAIT_EXIT=$?
54+
while true; do
55+
if aws ssm wait command-executed \
56+
--command-id "$CMD_ID" \
57+
--instance-id "$INSTANCE_ID"; then
58+
break # waiter succeeds only on Status == Success
59+
fi
60+
61+
STATUS=$(aws ssm get-command-invocation \
62+
--command-id "$CMD_ID" \
63+
--instance-id "$INSTANCE_ID" \
64+
--query "Status" --output text 2>/dev/null || echo "Pending")
5765
66+
case "$STATUS" in
67+
Success) break ;;
68+
Failed|Cancelled|Cancelling|TimedOut)
69+
echo "Deployment ended with status: $STATUS"
70+
aws ssm get-command-invocation \
71+
--command-id "$CMD_ID" \
72+
--instance-id "$INSTANCE_ID" \
73+
--query '{Status:Status,Stdout:StandardOutputContent,Stderr:StandardErrorContent}' \
74+
--output json
75+
exit 1 ;;
76+
*) echo "Still running (status: $STATUS) — waiter capped out, re-waiting" ;;
77+
esac
78+
done
79+
80+
echo "Deployment completed successfully."
5881
aws ssm get-command-invocation \
5982
--command-id "$CMD_ID" \
6083
--instance-id "$INSTANCE_ID" \
6184
--query '{Status:Status,Stdout:StandardOutputContent,Stderr:StandardErrorContent}' \
6285
--output json
63-
64-
exit $WAIT_EXIT

‎.github/workflows/create-release.yml‎

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,19 +46,40 @@ jobs:
4646
echo "cmd_id=$CMD_ID" >> "$GITHUB_OUTPUT"
4747
4848
- name: Wait for SSM command to finish
49+
timeout-minutes: 20
4950
env:
5051
INSTANCE_ID: ${{ secrets.EC2_INSTANCE_ID }}
5152
CMD_ID: ${{ steps.ssm.outputs.cmd_id }}
5253
run: |
53-
WAIT_EXIT=0
54-
aws ssm wait command-executed \
55-
--command-id "$CMD_ID" \
56-
--instance-id "$INSTANCE_ID" || WAIT_EXIT=$?
54+
while true; do
55+
if aws ssm wait command-executed \
56+
--command-id "$CMD_ID" \
57+
--instance-id "$INSTANCE_ID"; then
58+
break # waiter succeeds only on Status == Success
59+
fi
60+
61+
STATUS=$(aws ssm get-command-invocation \
62+
--command-id "$CMD_ID" \
63+
--instance-id "$INSTANCE_ID" \
64+
--query "Status" --output text 2>/dev/null || echo "Pending")
5765
66+
case "$STATUS" in
67+
Success) break ;;
68+
Failed|Cancelled|Cancelling|TimedOut)
69+
echo "Deployment ended with status: $STATUS"
70+
aws ssm get-command-invocation \
71+
--command-id "$CMD_ID" \
72+
--instance-id "$INSTANCE_ID" \
73+
--query '{Status:Status,Stdout:StandardOutputContent,Stderr:StandardErrorContent}' \
74+
--output json
75+
exit 1 ;;
76+
*) echo "Still running (status: $STATUS) — waiter capped out, re-waiting" ;;
77+
esac
78+
done
79+
80+
echo "Deployment completed successfully."
5881
aws ssm get-command-invocation \
5982
--command-id "$CMD_ID" \
6083
--instance-id "$INSTANCE_ID" \
6184
--query '{Status:Status,Stdout:StandardOutputContent,Stderr:StandardErrorContent}' \
6285
--output json
63-
64-
exit $WAIT_EXIT

‎.github/workflows/deploy-staging.yml‎

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,19 +46,40 @@ jobs:
4646
echo "cmd_id=$CMD_ID" >> "$GITHUB_OUTPUT"
4747
4848
- name: Wait for SSM command to finish
49+
timeout-minutes: 20
4950
env:
5051
INSTANCE_ID: ${{ secrets.EC2_STAGING_INSTANCE_ID }}
5152
CMD_ID: ${{ steps.ssm.outputs.cmd_id }}
5253
run: |
53-
WAIT_EXIT=0
54-
aws ssm wait command-executed \
55-
--command-id "$CMD_ID" \
56-
--instance-id "$INSTANCE_ID" || WAIT_EXIT=$?
54+
while true; do
55+
if aws ssm wait command-executed \
56+
--command-id "$CMD_ID" \
57+
--instance-id "$INSTANCE_ID"; then
58+
break # waiter succeeds only on Status == Success
59+
fi
60+
61+
STATUS=$(aws ssm get-command-invocation \
62+
--command-id "$CMD_ID" \
63+
--instance-id "$INSTANCE_ID" \
64+
--query "Status" --output text 2>/dev/null || echo "Pending")
5765
66+
case "$STATUS" in
67+
Success) break ;;
68+
Failed|Cancelled|Cancelling|TimedOut)
69+
echo "Deployment ended with status: $STATUS"
70+
aws ssm get-command-invocation \
71+
--command-id "$CMD_ID" \
72+
--instance-id "$INSTANCE_ID" \
73+
--query '{Status:Status,Stdout:StandardOutputContent,Stderr:StandardErrorContent}' \
74+
--output json
75+
exit 1 ;;
76+
*) echo "Still running (status: $STATUS) — waiter capped out, re-waiting" ;;
77+
esac
78+
done
79+
80+
echo "Deployment completed successfully."
5881
aws ssm get-command-invocation \
5982
--command-id "$CMD_ID" \
6083
--instance-id "$INSTANCE_ID" \
6184
--query '{Status:Status,Stdout:StandardOutputContent,Stderr:StandardErrorContent}' \
6285
--output json
63-
64-
exit $WAIT_EXIT

0 commit comments

Comments
 (0)