-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
170 changed files
with
13,101 additions
and
1,849 deletions.
There are no files selected for viewing
58 changes: 58 additions & 0 deletions
58
.github/workflows/cloud_demo_environment_deprovisioning.yaml
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
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 Production CLI Config | ||
run: | | ||
echo "Setting up LaunchDarkly CLI for LD Production Account" | ||
ldcli config --set access-token ${{ secrets.LD_API_KEY }} | ||
- name: Remove Demo Environment from LD Production Account | ||
run: | | ||
ldcli projects delete --project ${{ env.DEMO_NAMESPACE }}-ld-demo | ||
- name: Set LaunchDarkly EAP CLI Config | ||
run: | | ||
echo "Setting up LaunchDarkly CLI for LD EAP Account" | ||
ldcli config --set access-token ${{ secrets.LD_EAP_API_KEY }} | ||
- name: Remove Demo Environment from LD EAP Account | ||
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 }} | ||
|
140 changes: 140 additions & 0 deletions
140
.github/workflows/cloud_demo_environment_provisioning.yaml
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,140 @@ | ||
name: Cloud Demo Environment Provisioning | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
name: | ||
description: 'Username' | ||
required: true | ||
type: | ||
description: 'Type of environment to provision (eap or production)' | ||
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 }} | ||
LD_PROJECT_KEY: ${{ github.event.inputs.name }}-ld-demo | ||
|
||
|
||
jobs: | ||
provisioning_demo_environment: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v3 | ||
|
||
- name: Set up Python | ||
uses: actions/setup-python@v2 | ||
with: | ||
python-version: "3.9" | ||
|
||
- name: Install dependencies | ||
run: | | ||
python -m pip install --upgrade pip | ||
pip install -r ./.github/workflows/demo_provisioning_scripts/requirements.txt | ||
- name: Set LD_API_KEY | ||
run: echo "LD_API_KEY=$(if [ '${{ github.event.inputs.type }}' == 'production' ]; then echo '${{ secrets.LD_API_KEY }}'; elif [ '${{ github.event.inputs.type }}' == 'eap' ]; then echo '${{ secrets.LD_EAP_API_KEY }}'; else echo '${{ secrets.LD_API_KEY }}'; fi)" >> $GITHUB_ENV | ||
|
||
- name: Create / Setup LaunchDarkly Project | ||
id: ld_project_setup | ||
run: | | ||
echo "Creating and Setting up LaunchDarkly project for namespace: ${{ env.DEMO_NAMESPACE }}" | ||
python ./.github/workflows/demo_provisioning_scripts/DemoBuilder.py | ||
- name: Create .env file for demo pod | ||
run: | | ||
touch ./.env.production | ||
echo NEXT_PUBLIC_LD_CLIENT_KEY=${{ env.LD_CLIENT_KEY }} >> ./.env.production | ||
echo LD_SDK_KEY=${{ env.LD_SDK_KEY }} >> ./.env.production | ||
echo DB_URL=${{ secrets.DB_URL }} >> ./.env.production | ||
echo LD_API_KEY=${{ env.LD_API_KEY }} >> ./.env.production | ||
echo DESTINATIONENV=production >> ./.env.production | ||
echo PROJECT_KEY=${{ env.LD_PROJECT_KEY }} >> ./.env.production | ||
echo AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY }} >> ./.env.production | ||
echo AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }} >> ./.env.production | ||
- name: Login to Amazon ECR | ||
id: login-ecr | ||
uses: aws-actions/amazon-ecr-login@v1 | ||
|
||
- name: Build, tag, and push image to Amazon ECR | ||
env: | ||
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} | ||
ECR_REPOSITORY: ld-core-demo | ||
run: | | ||
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:${{ env.DEMO_NAMESPACE }}-${{ github.run_id }} . | ||
docker push $ECR_REGISTRY/$ECR_REPOSITORY:${{ env.DEMO_NAMESPACE }}-${{ github.run_id }} | ||
- name: Update K8s Deploy File | ||
run: python ./.github/workflows/update_k8s_deploy_file.py | ||
env: | ||
NAMESPACE: ${{ env.DEMO_NAMESPACE }} | ||
URL: ${{ env.DEMO_NAMESPACE }}.launchdarklydemos.com | ||
IMAGE: ${{ steps.login-ecr.outputs.registry }}/ld-core-demo:${{ env.DEMO_NAMESPACE }}-${{ github.run_id }} | ||
|
||
- 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: Create Namespace In Kubernetes | ||
if: env.namespace_exists == 'false' | ||
uses: kodermax/kubectl-aws-eks@master | ||
with: | ||
args: create namespace ${{ env.DEMO_NAMESPACE }} | ||
|
||
- name: Applying deploy file to Kubernetes | ||
uses: kodermax/kubectl-aws-eks@master | ||
with: | ||
args: apply -f ./.github/workflows/deploy_files/deploy.yaml -n ${{ 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: Add Route 53 Record | ||
run: | | ||
HOSTED_ZONE_ID=$(aws route53 list-hosted-zones-by-name --dns-name "launchdarklydemos.com." --query "HostedZones[0].Id" --output text) | ||
RECORD_SET_JSON='{ | ||
"Comment": "Creating Alias record that points to ALB", | ||
"Changes": [ | ||
{ | ||
"Action": "UPSERT", | ||
"ResourceRecordSet": { | ||
"Name": "${{ env.DEMO_NAMESPACE }}.launchdarklydemos.com", | ||
"Type": "A", | ||
"AliasTarget": { | ||
"HostedZoneId": "Z35SXDOTRQ7X7K", | ||
"DNSName": "k8s-ldcoredemolb-93af62c3af-1176236694.us-east-1.elb.amazonaws.com", | ||
"EvaluateTargetHealth": false | ||
} | ||
} | ||
} | ||
] | ||
}' | ||
aws route53 change-resource-record-sets --hosted-zone-id $HOSTED_ZONE_ID --change-batch "$RECORD_SET_JSON" | ||
env: | ||
AWS_REGION: 'us-east-1' | ||
|
||
- name: Delete the deploy file | ||
run: rm -rf ./.github/workflows/deploy_files | ||
|
||
- name: Remove .env file | ||
run: rm ./.env.production | ||
|
||
- name: LaunchDarkly Code References | ||
uses: launchdarkly/[email protected] | ||
with: | ||
accessToken: ${{ env.LD_API_KEY }} | ||
projKey: ${{ env.LD_PROJECT_KEY }} | ||
repoName: main |
Oops, something went wrong.