Skip to content

Commit 4490ce9

Browse files
committed
fix: reorder cleanup — linked accounts before StackSet deletion
Move linked account resource cleanup before management account StackSet deletion so stack instances are removed before attempting to delete the StackSet. Replace fragile inline bash (sleep 5) with delete_stackset.py which properly waits for instance deletion to complete.
1 parent e08c640 commit 4490ce9

1 file changed

Lines changed: 35 additions & 59 deletions

File tree

.github/workflows/cleanup.yml

Lines changed: 35 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -83,57 +83,7 @@ jobs:
8383
done
8484
continue-on-error: true
8585

86-
# ── Management account (StackSets live here) ──────────────────────────
87-
88-
- name: Assume role — management account
89-
uses: aws-actions/configure-aws-credentials@v4
90-
with:
91-
role-to-assume: arn:aws:iam::${{ secrets.AWS_MGMT_ACCOUNT_ID }}:role/GitHubActionsE2ERole
92-
aws-region: ap-northeast-2
93-
continue-on-error: true
94-
95-
- name: Delete tagged resources — management account
96-
working-directory: .github/scripts
97-
run: |
98-
python3 teardown.py \
99-
--all \
100-
--tag-value migTEST0000001 \
101-
--regions ap-northeast-2,us-east-1,us-west-2
102-
continue-on-error: true
103-
104-
- name: Delete stale StackSets — management account
105-
run: |
106-
for ss in $(aws cloudformation list-stack-sets \
107-
--status ACTIVE \
108-
--query 'Summaries[?starts_with(StackSetName, `map-auto-tagger-e2e-pr`)].StackSetName' \
109-
--output text \
110-
--region ap-northeast-2 2>/dev/null); do
111-
echo "Removing all instances from StackSet: $ss"
112-
# Delete all stack instances first (required before deleting the StackSet)
113-
aws cloudformation delete-stack-instances \
114-
--stack-set-name "$ss" \
115-
--regions ap-northeast-2 \
116-
--no-retain-stacks \
117-
--deployment-targets 'OrganizationalUnitIds=[]' \
118-
--region ap-northeast-2 2>/dev/null || \
119-
aws cloudformation delete-stack-instances \
120-
--stack-set-name "$ss" \
121-
--accounts \
122-
"${{ secrets.AWS_LINKED1_ACCOUNT_ID }}" \
123-
"${{ secrets.AWS_LINKED2_ACCOUNT_ID }}" \
124-
"${{ secrets.AWS_LINKED3_ACCOUNT_ID }}" \
125-
"${{ secrets.AWS_LINKED4_ACCOUNT_ID }}" \
126-
"${{ secrets.AWS_LINKED5_ACCOUNT_ID }}" \
127-
--regions ap-northeast-2 \
128-
--no-retain-stacks \
129-
--region ap-northeast-2 2>/dev/null || true
130-
sleep 5
131-
echo "Deleting StackSet: $ss"
132-
aws cloudformation delete-stack-set --stack-set-name "$ss" --region ap-northeast-2 || true
133-
done
134-
continue-on-error: true
135-
136-
# ── Linked account 1 ──────────────────────────────────────────────────
86+
# ── Linked accounts (clean these BEFORE deleting StackSets) ───────────
13787

13888
- name: Assume role — linked account 1
13989
uses: aws-actions/configure-aws-credentials@v4
@@ -151,8 +101,6 @@ jobs:
151101
--regions ap-northeast-2,us-east-1,us-west-2
152102
continue-on-error: true
153103

154-
# ── Linked account 2 ──────────────────────────────────────────────────
155-
156104
- name: Assume role — linked account 2
157105
uses: aws-actions/configure-aws-credentials@v4
158106
with:
@@ -169,8 +117,6 @@ jobs:
169117
--regions ap-northeast-2,us-east-1,us-west-2
170118
continue-on-error: true
171119

172-
# ── Linked account 3 ──────────────────────────────────────────────────
173-
174120
- name: Assume role — linked account 3
175121
uses: aws-actions/configure-aws-credentials@v4
176122
with:
@@ -187,8 +133,6 @@ jobs:
187133
--regions ap-northeast-2,us-east-1,us-west-2
188134
continue-on-error: true
189135

190-
# ── Linked account 4 ──────────────────────────────────────────────────
191-
192136
- name: Assume role — linked account 4
193137
uses: aws-actions/configure-aws-credentials@v4
194138
with:
@@ -205,8 +149,6 @@ jobs:
205149
--regions ap-northeast-2,us-east-1,us-west-2
206150
continue-on-error: true
207151

208-
# ── Linked account 5 ──────────────────────────────────────────────────
209-
210152
- name: Assume role — linked account 5
211153
uses: aws-actions/configure-aws-credentials@v4
212154
with:
@@ -222,3 +164,37 @@ jobs:
222164
--tag-value migTEST0000001 \
223165
--regions ap-northeast-2,us-east-1,us-west-2
224166
continue-on-error: true
167+
168+
# ── Management account (StackSets — delete AFTER linked accounts) ─────
169+
170+
- name: Assume role — management account
171+
uses: aws-actions/configure-aws-credentials@v4
172+
with:
173+
role-to-assume: arn:aws:iam::${{ secrets.AWS_MGMT_ACCOUNT_ID }}:role/GitHubActionsE2ERole
174+
aws-region: ap-northeast-2
175+
continue-on-error: true
176+
177+
- name: Delete tagged resources — management account
178+
working-directory: .github/scripts
179+
run: |
180+
python3 teardown.py \
181+
--all \
182+
--tag-value migTEST0000001 \
183+
--regions ap-northeast-2,us-east-1,us-west-2
184+
continue-on-error: true
185+
186+
- name: Delete stale StackSets — management account
187+
working-directory: .github/scripts
188+
run: |
189+
for ss in $(aws cloudformation list-stack-sets \
190+
--status ACTIVE \
191+
--query 'Summaries[?starts_with(StackSetName, `map-auto-tagger-e2e-pr`)].StackSetName' \
192+
--output text \
193+
--region ap-northeast-2 2>/dev/null); do
194+
echo "Deleting StackSet: $ss"
195+
python3 delete_stackset.py \
196+
--name "$ss" \
197+
--accounts "${{ secrets.AWS_LINKED1_ACCOUNT_ID }},${{ secrets.AWS_LINKED2_ACCOUNT_ID }},${{ secrets.AWS_LINKED3_ACCOUNT_ID }},${{ secrets.AWS_LINKED4_ACCOUNT_ID }},${{ secrets.AWS_LINKED5_ACCOUNT_ID }}" \
198+
--region ap-northeast-2 || true
199+
done
200+
continue-on-error: true

0 commit comments

Comments
 (0)