Skip to content

Commit

Permalink
merged with latest main
Browse files Browse the repository at this point in the history
  • Loading branch information
tonytrinh3 committed Jan 15, 2025
2 parents d650a68 + fa8a8f1 commit 00a6683
Show file tree
Hide file tree
Showing 170 changed files with 13,101 additions and 1,849 deletions.
58 changes: 58 additions & 0 deletions .github/workflows/cloud_demo_environment_deprovisioning.yaml
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 .github/workflows/cloud_demo_environment_provisioning.yaml
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
Loading

0 comments on commit 00a6683

Please sign in to comment.