Skip to content

EREGCSC-2922-B Fix workflow order for CDK deploy #8

EREGCSC-2922-B Fix workflow order for CDK deploy

EREGCSC-2922-B Fix workflow order for CDK deploy #8

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