Skip to content

Cloud Demo Environment De-Provisioning #361

Cloud Demo Environment De-Provisioning

Cloud Demo Environment De-Provisioning #361

name: Cloud Demo Environment De-Provisioning
on:
workflow_dispatch:
inputs:
name:
description: 'User alias or LD env key'
required: true
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: us-east-1
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
ECR_REPOSITORY: ld-core-demo
KUBECTL_VERSION: "v1.23.0"
DEMO_NAMESPACE: ${{ github.event.inputs.name }}
jobs:
deploy-to-demoenv:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install LaunchDarkly CLI
run: npm install -g @launchdarkly/ldcli
- name: Set LaunchDarkly Demo Engineering Account CLI Config
run: |
echo "Setting up LaunchDarkly CLI for Demo Engineering Account"
ldcli config --set access-token ${{ secrets.LD_EAP_API_KEY }}
- name: Remove Demo Environment from Demo Engineering Account for ${{ env.DEMO_NAMESPACE }}
run: |
ldcli projects delete --project ${{ env.DEMO_NAMESPACE }}-ld-demo
- name: Check Namespace in Kubernetes
uses: kodermax/kubectl-aws-eks@master
with:
args: get namespace ${{ env.DEMO_NAMESPACE }} &>/dev/null && echo "namespace_exists=true" >> $GITHUB_ENV || echo "namespace_exists=false" >> $GITHUB_ENV
- name: Delete Kubernetes Namespace
if: env.namespace_exists == 'true'
uses: kodermax/kubectl-aws-eks@master
with:
args: delete namespace ${{ env.DEMO_NAMESPACE }}
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- name: Delete any existing Route53 records
run: |
echo "Fetching Hosted Zone ID for ${{ env.ROOT_DOMAIN }}"
HOSTED_ZONE_ID=$(aws route53 list-hosted-zones-by-name \
--dns-name "${{ env.ROOT_DOMAIN }}." \
--query "HostedZones[0].Id" \
--output text)
RECORD_NAME="${{ env.DEMO_NAMESPACE }}.${{ env.ROOT_DOMAIN }}"
echo "Looking for existing record: $RECORD_NAME"
# Fetch matching records
MATCHED=$(aws route53 list-resource-record-sets \
--hosted-zone-id "$HOSTED_ZONE_ID" \
--query "ResourceRecordSets[?Name == '$RECORD_NAME.']" \
--output json)
# Delete if found
if [[ "$MATCHED" != "[]" ]]; then
echo "Deleting existing records for $RECORD_NAME..."
echo "$MATCHED" | jq -c '.[]' | while read -r record; do
# Wrap in full change batch
echo "{
\"Comment\": \"Deleting old record\",
\"Changes\": [
{
\"Action\": \"DELETE\",
\"ResourceRecordSet\": $record
}
]
}" > delete-record.json
aws route53 change-resource-record-sets \
--hosted-zone-id "$HOSTED_ZONE_ID" \
--change-batch file://delete-record.json
done
else
echo "No existing record found for $RECORD_NAME."
fi
env:
AWS_REGION: 'us-east-1'
ROOT_DOMAIN: launchdarklydemos.com