Skip to content

DEV/PROD deploy - @devksingh4 #219

DEV/PROD deploy - @devksingh4

DEV/PROD deploy - @devksingh4 #219

Workflow file for this run

name: Deploy all resources to DEV and PROD
run-name: DEV/PROD deploy - @${{ github.actor }}
on:
workflow_dispatch:
push:
branches:
- main
jobs:
test-unit:
runs-on: ubuntu-latest
name: Run Unit Tests
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.11 for testing
uses: actions/setup-python@v5
with:
python-version: 3.11
- name: Setup Node LTS
uses: actions/setup-node@v4
with:
node-version: 18
- name: Run unit testing
run: make test_unit
deploy-aws-dev:
runs-on: ubuntu-latest
needs:
- test-unit
concurrency:
group: resume-book-aws-dev
cancel-in-progress: false
environment: "AWS DEV"
name: Deploy to AWS DEV
steps:
- uses: actions/checkout@v3
- uses: aws-actions/setup-sam@v2
with:
use-installer: true
- uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- run: make deploy_dev
deploy-cf-pages-dev:
runs-on: ubuntu-latest
needs:
- test-unit
concurrency:
group: resume-book-cf-pages-dev
cancel-in-progress: false
permissions:
contents: read
deployments: write
name: Deploy to Cloudflare Pages DEV
environment: "Cloudflare Pages - Dev"
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Node LTS
uses: actions/setup-node@v4
with:
node-version: 18
- name: Build
run: cd clientv2 && corepack enable && yarn && yarn run build
env:
VITE_AAD_CLIENT_ID: 251efa82-f589-42e1-9ebb-e214a4f40a0f
VITE_API_URL: https://resumes.aws.qa.acmuiuc.org/api/v1
VITE_KINDE_CLIENT_ID: 9dfcd7977da347f3ab55fbb909a4d5cf
VITE_RUN_ENVIRONMENT: dev
- name: Publish
uses: cloudflare/pages-action@v1
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
projectName: resume-book-dev
directory: clientv2/dist/
gitHubToken: ${{ secrets.GITHUB_TOKEN }}
test-dev:
runs-on: ubuntu-latest
needs:
- deploy-aws-dev
- deploy-cf-pages-dev
name: Perform live testing
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.11 for testing
uses: actions/setup-python@v5
with:
python-version: 3.11
- name: Setup Node LTS
uses: actions/setup-node@v4
with:
node-version: 18
- name: Run integration testing
run: make test_live_integration
env:
RB_JWT_SECRET: ${{ secrets.RB_JWT_SECRET }}
CI: true
- name: Run E2E testing
run: make test_e2e
env:
RB_PLAYWRIGHT_USERNAME: ${{ secrets.RB_PLAYWRIGHT_USERNAME }}
RB_PLAYWRIGHT_PASSWORD: ${{ secrets.RB_PLAYWRIGHT_PASSWORD }}
RB_JWT_SECRET: ${{ secrets.RB_JWT_SECRET }}
CI: true
deploy-aws-prod:
runs-on: ubuntu-latest
name: Deploy to AWS PROD
concurrency:
group: resume-book-aws-prod
cancel-in-progress: false
needs:
- test-dev
- deploy-aws-dev
environment: "AWS PROD"
steps:
- uses: actions/checkout@v3
- uses: aws-actions/setup-sam@v2
with:
use-installer: true
- uses: aws-actions/configure-aws-credentials@v2
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
- run: make deploy_prod
deploy-cf-pages-prod:
runs-on: ubuntu-latest
needs:
- test-dev
permissions:
contents: read
deployments: write
concurrency:
group: resume-book-cf-pages-prod
cancel-in-progress: false
name: Deploy to Cloudflare Pages Prod
environment: "Cloudflare Pages - Prod"
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Node LTS
uses: actions/setup-node@v4
with:
node-version: 18
- name: Build
run: cd clientv2 && corepack enable && yarn && yarn run build
env:
VITE_AAD_CLIENT_ID: 5178a6b1-f46d-40a2-b550-1389b9316446
VITE_API_URL: https://resumes.aws.acmuiuc.org/api/v1
VITE_KINDE_CLIENT_ID: fdacad7aea554755844105f5606da0f6
VITE_RUN_ENVIRONMENT: prod
- name: Publish
uses: cloudflare/pages-action@v1
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
projectName: resume-book-prod
directory: clientv2/dist/
gitHubToken: ${{ secrets.GITHUB_TOKEN }}
health-check-prod:
runs-on: ubuntu-latest
name: Confirm services healthy
needs:
- deploy-aws-prod
- deploy-cf-pages-prod
steps:
- name: Call the API healthz endpoint
run: curl -f https://resumes.aws.acmuiuc.org/api/v1/healthz
- name: Call the base UI endpoint
run: curl -f https://resumes.acm.illinois.edu