EREGCSC-2922-B Fix workflow order for CDK deploy #8
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Remove Experimental (CDK)" | |
on: | |
workflow_dispatch: | |
pull_request: | |
types: [ closed ] | |
permissions: | |
id-token: write | |
contents: read | |
actions: read | |
jobs: | |
remove: | |
environment: | |
name: "dev" | |
runs-on: ubuntu-22.04 | |
steps: | |
# gettign PR is trivial here because the only tirgger is closing a PR | |
- name: Echo PR# | |
env: | |
PR: ${{ github.event.number }} | |
run: echo "Your PR is ${PR}" | |
# Checkout the code | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
# Setup Node | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 20 | |
# Setup Python | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12' | |
# Configure AWS credentials for GitHub Actions | |
- name: Configure AWS credentials for GitHub Actions | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: ${{ secrets.AWS_OIDC_ROLE_TO_ASSUME }} | |
aws-region: us-east-1 | |
- name: Destroy PR-Specific Redirect Stack | |
env: | |
PR_NUMBER: ${{ github.event.number }} | |
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }} | |
AWS_DEFAULT_REGION: ${{ vars.AWS_DEFAULT_REGION }} | |
CDK_DEBUG: true | |
ENVIRONMENT_NAME: ${{ env.ENVIRONMENT_NAME }} | |
run: | | |
pushd cdk-eregs | |
npm install -g aws-cdk@latest @aws-sdk/client-ssm | |
npm install | |
# Generate the exact stack name for this PR | |
STACK_NAME="cms-eregs-eph-${PR_NUMBER}-redirect-api" | |
echo "Destroying PR-specific stack: ${STACK_NAME}" | |
cdk destroy "${STACK_NAME}" \ | |
-c environment=${{ env.ENVIRONMENT_NAME }} \ | |
--force \ | |
--app "npx ts-node bin/zip-lambdas.ts" | |
echo "Cleanup completed for stack: ${STACK_NAME}" | |
popd | |
- name: Destroy PR-Maintenance Stack | |
env: | |
PR_NUMBER: ${{ github.event.number }} | |
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }} | |
AWS_DEFAULT_REGION: ${{ vars.AWS_DEFAULT_REGION }} | |
CDK_DEBUG: true | |
ENVIRONMENT_NAME: ${{ env.ENVIRONMENT_NAME }} | |
run: | | |
pushd cdk-eregs | |
npm install -g aws-cdk@latest @aws-sdk/client-ssm | |
npm install | |
# Generate the exact stack name for this PR | |
STACK_NAME="cms-eregs-eph-${PR_NUMBER}-maintenance-api" | |
echo "Destroying PR-specific stack: ${STACK_NAME}" | |
cdk destroy "${STACK_NAME}" \ | |
-c environment=${{ env.ENVIRONMENT_NAME }} \ | |
--force \ | |
--app "npx ts-node bin/zip-lambdas.ts" | |
echo "Cleanup completed for stack: ${STACK_NAME}" | |
popd | |
- name: Cleanup Docker-based Lambda Stacks | |
env: | |
PR_NUMBER: ${{ github.event.number }} | |
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }} | |
AWS_DEFAULT_REGION: ${{ vars.AWS_DEFAULT_REGION }} | |
CDK_DEBUG: true | |
ENVIRONMENT_NAME: ${{ env.ENVIRONMENT_NAME }} | |
run: | | |
pushd cdk-eregs | |
npm install -g aws-cdk@latest @aws-sdk/client-ssm | |
npm install | |
# Delete the database for this ephemeral environment | |
echo "Deleting database for PR: ${PR_NUMBER}" | |
aws lambda invoke --function-name cms-eregs-eph-$PR_NUMBER-dropdb /dev/stdout | tee -a aws.log | |
# Check for invocation errors | |
! grep -q FunctionError aws.log | |
# Generate the stack names for this PR | |
TEXT_EXTRACTOR_STACK="cms-eregs-eph-${PR_NUMBER}-text-extractor" | |
FR_PARSER_STACK="cms-eregs-eph-${PR_NUMBER}-fr-parser" | |
ECFR_PARSER_STACK="cms-eregs-eph-${PR_NUMBER}-ecfr-parser" | |
API_STACK="cms-eregs-eph-${PR_NUMBER}-api" | |
# Destroy fr-parser stack | |
echo "Destroying PR-specific stack: ${FR_PARSER_STACK}" | |
cdk destroy "${FR_PARSER_STACK}" \ | |
-c environment=${{ env.ENVIRONMENT_NAME }} \ | |
--force \ | |
--app "npx ts-node bin/docker-lambdas.ts" | |
# Destroy ecfr-parser stack | |
echo "Destroying PR-specific stack: ${ECFR_PARSER_STACK}" | |
cdk destroy "${ECFR_PARSER_STACK}" \ | |
-c environment=${{ env.ENVIRONMENT_NAME }} \ | |
--force \ | |
--app "npx ts-node bin/docker-lambdas.ts" | |
# Destroy api-stack stack | |
echo "Destroying PR-specific stack: ${API_STACK}" | |
cdk destroy "${API_STACK}" \ | |
-c environment=${{ env.ENVIRONMENT_NAME }} \ | |
--force \ | |
--app "npx ts-node bin/docker-lambdas.ts" | |
# Destroy text-extractor stack | |
echo "Destroying PR-specific stack: ${TEXT_EXTRACTOR_STACK}" | |
cdk destroy "${TEXT_EXTRACTOR_STACK}" \ | |
-c environment=${{ env.ENVIRONMENT_NAME }} \ | |
--force \ | |
--app "npx ts-node bin/docker-lambdas.ts" | |
echo "Cleanup completed for all Docker-based stacks" | |
popd | |
- name: Destroy PR-Specific Static-Asset Stack | |
env: | |
PR_NUMBER: ${{ github.event.number }} | |
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }} | |
AWS_DEFAULT_REGION: ${{ vars.AWS_DEFAULT_REGION }} | |
CDK_DEBUG: true | |
ENVIRONMENT_NAME: ${{ env.ENVIRONMENT_NAME }} | |
run: | | |
pushd cdk-eregs | |
npm install -g aws-cdk@latest @aws-sdk/client-ssm | |
npm install | |
# Generate the exact stack name for this PR | |
STACK_NAME="cms-eregs-eph-${PR_NUMBER}-static-assets" | |
echo "Destroying PR-specific stack: ${STACK_NAME}" | |
cdk destroy "${STACK_NAME}" \ | |
-c environment=${{ env.ENVIRONMENT_NAME }} \ | |
--force \ | |
--app "npx ts-node bin/zip-lambdas.ts" | |
echo "Cleanup completed for stack: ${STACK_NAME}" | |
popd |