Skip to content

Commit

Permalink
Refactor workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
cp-sumi-k committed Sep 18, 2023
1 parent b387090 commit 68c37e4
Show file tree
Hide file tree
Showing 10 changed files with 1,254 additions and 288 deletions.
78 changes: 78 additions & 0 deletions .github/workflows/deploy-backend-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: DeployBackendDev

on:
push:

jobs:
deploy-dev:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- name: Checkout
uses: actions/[email protected]

- uses: actions/setup-node@v1
with:
node-version: "18"

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/github-actions-backend-access
aws-region: ap-south-1

- name: Checkout
uses: actions/[email protected]

- uses: actions/setup-go@v2
with:
go-version: "^1.20"

- name: Build backend and deploy to S3
run: |
apt-get update && apt-get install -y zip
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o main main.go
zip canopas_serverless_dev.zip main
aws s3 cp canopas_serverless_dev.zip s3://canopas-dev-lambda-handlers
- name: Deploy cloudformation stack
id: canopas-website-dev-lambda-stack
uses: aws-actions/aws-cloudformation-github-deploy@v1
with:
name: canopas-website-dev-lambda-stack
template: infrastructure/backend.yml
capabilities: CAPABILITY_IAM,CAPABILITY_NAMED_IAM
timeout-in-minutes: "10"
no-fail-on-empty-changeset: "1"
parameter-overrides: >-
EnvName=dev,
Sender=${{ secrets.SENDER }},
ContactSender=${{ secrets.CONTACT_SENDER }},
JobsReceiver=${{ secrets.JOBS_RECEIVER }},
ContactReceiver=${{ secrets.CONTACT_RECEIVER }},
AccessKeyId=${{ secrets.ACCESS_KEY_ID }},
SecretAccessKey=${{ secrets.SECRET_ACCESS_KEY }},
Region=${{ secrets.AWS_REGION }},
DbUsername=${{ secrets.DB_USERNAME }},
DbPassword=${{ secrets.DB_PASSWORD }},
DbHost=${{ secrets.DB_HOST }},
DbPort=${{ secrets.DB_PORT }},
DbName=${{ secrets.DB_NAME }},
RecaptchaConfigJSONBase64=${{ secrets.RECAPTCHA_CONFIG_JSON_BASE64 }},
RecaptchaSiteKey=${{ secrets.RECAPTCHA_SITE_KEY }},
RecaptchaProjectId=${{ secrets.RECAPTCHA_PROJECT_ID }},
JobsSpreadsheetId=${{ secrets.JOBS_SPREADSHEET_ID }},
JobsSheetId=${{ secrets.JOBS_SHEET_ID }},
GithubAccessToken=${{ secrets.PERSONAL_ACCESS_TOKEN_GITHUB }},
ResourcesURL=${{secrets.RESOURCES_URL}},
LambdaBucket=canopas-dev-lambda-handlers,
LambdaUrl=canopas_serverless_dev.zip,
LambdaTimeout=10,
LambdaRoleArnName=${{ secrets.LAMBDA_ROLE_ARN_NAME }},
LambdaFunctionArnName=${{ secrets.DEV_LAMBDA_FUNCTION_ARN_NAME }},
LambdaRoleName=canopas-dev-lambda-role,
LambdaName=canopas-dev-lambda-function,
ApiGatewayName=canopas-dev-lambda-api,
CustomDomainName=test-api.canopas.com
80 changes: 80 additions & 0 deletions .github/workflows/deploy-backend-prod.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: DeployBackendDev

on:
push:
branches:
- "master"

jobs:
deploy-dev:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- name: Checkout
uses: actions/[email protected]

- uses: actions/setup-node@v1
with:
node-version: "18"

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/github-actions-backend-access
aws-region: ap-south-1

- name: Checkout
uses: actions/[email protected]

- uses: actions/setup-go@v2
with:
go-version: "^1.20"

- name: Build backend and deploy to S3
run: |
apt-get update && apt-get install -y zip
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o main main.go
zip canopas_serverless_dev.zip main
aws s3 cp canopas_serverless_dev.zip s3://canopas-dev-lambda-handlers
- name: Deploy cloudformation stack
id: canopas-website-dev-lambda-stack
uses: aws-actions/aws-cloudformation-github-deploy@v1
with:
name: canopas-website-dev-lambda-stack
template: infrastructure/backend.yml
capabilities: CAPABILITY_IAM,CAPABILITY_NAMED_IAM
timeout-in-minutes: "10"
no-fail-on-empty-changeset: "1"
parameter-overrides: >-
EnvName=dev,
Sender=${{ secrets.SENDER }},
ContactSender=${{ secrets.CONTACT_SENDER }},
JobsReceiver=${{ secrets.JOBS_RECEIVER }},
ContactReceiver=${{ secrets.CONTACT_RECEIVER }},
AccessKeyId=${{ secrets.ACCESS_KEY_ID }},
SecretAccessKey=${{ secrets.SECRET_ACCESS_KEY }},
Region=${{ secrets.AWS_REGION }},
DbUsername=${{ secrets.DB_USERNAME }},
DbPassword=${{ secrets.DB_PASSWORD }},
DbHost=${{ secrets.DB_HOST }},
DbPort=${{ secrets.DB_PORT }},
DbName=${{ secrets.DB_NAME }},
RecaptchaConfigJSONBase64=${{ secrets.RECAPTCHA_CONFIG_JSON_BASE64 }},
RecaptchaSiteKey=${{ secrets.RECAPTCHA_SITE_KEY }},
RecaptchaProjectId=${{ secrets.RECAPTCHA_PROJECT_ID }},
JobsSpreadsheetId=${{ secrets.JOBS_SPREADSHEET_ID }},
JobsSheetId=${{ secrets.JOBS_SHEET_ID }},
GithubAccessToken=${{ secrets.PERSONAL_ACCESS_TOKEN_GITHUB }},
ResourcesURL=${{secrets.RESOURCES_URL}},
LambdaBucket=canopas-dev-lambda-handlers,
LambdaUrl=canopas_serverless_dev.zip,
LambdaTimeout=10,
LambdaRoleArnName=${{ secrets.LAMBDA_ROLE_ARN_NAME }},
LambdaFunctionArnName=${{ secrets.DEV_LAMBDA_FUNCTION_ARN_NAME }},
LambdaRoleName=canopas-dev-lambda-role,
LambdaName=canopas-dev-lambda-function,
ApiGatewayName=canopas-dev-lambda-api,
CustomDomainName=test-api.canopas.com
Original file line number Diff line number Diff line change
Expand Up @@ -40,48 +40,17 @@ jobs:
sh ./../deploy/generate-sitemap.sh https://dev-stack.canopas.com https://dev-stack-api.canopas.com
bash ./../deploy/deploy-ecr-image.sh dev-frontend ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/canopas-website-frontend
- name: Checkout
uses: actions/[email protected]

- uses: actions/setup-go@v2
with:
go-version: "^1.17.5"

- name: Build backend and push on ECR
run: |
bash ./deploy/deploy-ecr-image.sh dev-backend ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/canopas-website-backend
- name: Deploy cloudformation stack
id: canopas-website-dev-ECS-EC2-stack
uses: aws-actions/aws-cloudformation-github-deploy@v1
with:
name: canopas-website-dev-ECS-EC2-stack
template: infrastructure/template.yml
template: infrastructure/frontend.yml
capabilities: CAPABILITY_IAM,CAPABILITY_NAMED_IAM
timeout-in-minutes: "10"
no-fail-on-empty-changeset: "1"
parameter-overrides: >-
EnvName=dev,
Sender=${{ secrets.SENDER }},
ContactSender=${{ secrets.CONTACT_SENDER }},
JobsReceiver=${{ secrets.JOBS_RECEIVER }},
ContactReceiver=${{ secrets.CONTACT_RECEIVER }},
AccessKeyId=${{ secrets.ACCESS_KEY_ID }},
SecretAccessKey=${{ secrets.SECRET_ACCESS_KEY }},
Region=${{ secrets.AWS_REGION }},
DbUsername=${{ secrets.DB_USERNAME }},
DbPassword=${{ secrets.DB_PASSWORD }},
DbHost=${{ secrets.DB_HOST }},
DbPort=${{ secrets.DB_PORT }},
DbName=${{ secrets.DB_NAME }},
RecaptchaConfigJSONBase64=${{ secrets.RECAPTCHA_CONFIG_JSON_BASE64 }},
RecaptchaSiteKey=${{ secrets.RECAPTCHA_SITE_KEY }},
RecaptchaProjectId=${{ secrets.RECAPTCHA_PROJECT_ID }},
JobsSpreadsheetId=${{ secrets.JOBS_SPREADSHEET_ID }},
JobsSheetId=${{ secrets.JOBS_SHEET_ID }},
GithubAccessToken=${{ secrets.PERSONAL_ACCESS_TOKEN_GITHUB }},
ResourcesURL=${{secrets.RESOURCES_URL}},
ClusterName=canopas-website-dev,
ImageTag=${{ github.sha }}-${{ github.run_attempt }}-dev-frontend,
BackendImageTag=${{ github.sha }}-${{ github.run_attempt }}-dev-backend,
NginxImageTag=${{ github.sha }}-${{ github.run_attempt }}-dev-nginx
NginxImageTag=${{ github.sha }}-${{ github.run_attempt }}-dev-nginx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ on:
push:
branches:
- "master"

jobs:
deploy-prod:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -39,49 +39,18 @@ jobs:
mv src/config.prod.js src/config.js
sh ./../deploy/generate-sitemap.sh https://canopas.com https://prod-stack-api.canopas.com
bash ./../deploy/deploy-ecr-image.sh prod-frontend ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/canopas-website-frontend
- name: Checkout
uses: actions/[email protected]

- uses: actions/setup-go@v2
with:
go-version: "^1.17.5"

- name: Build backend and push on ECR
run: |
bash ./deploy/deploy-ecr-image.sh prod-backend ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.$AWS_REGION.amazonaws.com/canopas-website-backend
- name: Deploy cloudformation stack
id: canopas-website-prod-ECS-EC2-stack
uses: aws-actions/aws-cloudformation-github-deploy@v1
with:
name: canopas-website-prod-ECS-EC2-stack
template: infrastructure/template.yml
template: infrastructure/frontend.yml
capabilities: CAPABILITY_IAM,CAPABILITY_NAMED_IAM
timeout-in-minutes: "10"
no-fail-on-empty-changeset: "1"
parameter-overrides: >-
EnvName=prod,
Sender=${{ secrets.SENDER }},
ContactSender=${{ secrets.CONTACT_SENDER }},
JobsReceiver=${{ secrets.JOBS_RECEIVER }},
ContactReceiver=${{ secrets.CONTACT_RECEIVER }},
AccessKeyId=${{ secrets.ACCESS_KEY_ID }},
SecretAccessKey=${{ secrets.SECRET_ACCESS_KEY }},
Region=${{ secrets.AWS_REGION }},
DbUsername=${{ secrets.DB_USERNAME }},
DbPassword=${{ secrets.DB_PASSWORD }},
DbHost=${{ secrets.DB_HOST }},
DbPort=${{ secrets.DB_PORT }},
DbName=${{ secrets.DB_NAME }},
RecaptchaConfigJSONBase64=${{ secrets.RECAPTCHA_CONFIG_JSON_BASE64 }},
RecaptchaSiteKey=${{ secrets.RECAPTCHA_SITE_KEY }},
RecaptchaProjectId=${{ secrets.RECAPTCHA_PROJECT_ID }},
JobsSpreadsheetId=${{ secrets.JOBS_SPREADSHEET_ID }},
JobsSheetId=${{ secrets.JOBS_SHEET_ID }},
GithubAccessToken=${{ secrets.PERSONAL_ACCESS_TOKEN_GITHUB }},
ResourcesURL=${{secrets.RESOURCES_URL}},
ClusterName=canopas-website-prod,
ImageTag=${{ github.sha }}-${{ github.run_attempt }}-prod-frontend,
BackendImageTag=${{ github.sha }}-${{ github.run_attempt }}-prod-backend,
NginxImageTag=${{ github.sha }}-${{ github.run_attempt }}-prod-nginx
NginxImageTag=${{ github.sha }}-${{ github.run_attempt }}-prod-nginx
18 changes: 10 additions & 8 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,17 @@ require (
cloud.google.com/go/compute v1.23.0 // indirect
cloud.google.com/go/compute/metadata v0.2.3 // indirect
cloud.google.com/go/recaptchaenterprise/v2 v2.7.2 // indirect
github.com/aws/aws-lambda-go v1.41.0 // indirect
github.com/aws/aws-sdk-go v1.44.322 // indirect
github.com/bytedance/sonic v1.10.0 // indirect
github.com/awslabs/aws-lambda-go-api-proxy v0.14.0 // indirect
github.com/bytedance/sonic v1.10.1 // indirect
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect
github.com/chenzhuoyu/iasm v0.9.0 // indirect
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.15.0 // indirect
github.com/go-playground/validator/v10 v10.15.4 // indirect
github.com/go-sql-driver/mysql v1.7.1 // indirect
github.com/goccy/go-json v0.10.2 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
Expand All @@ -65,18 +67,18 @@ require (
github.com/mattn/go-isatty v0.0.19 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/pelletier/go-toml/v2 v2.0.9 // indirect
github.com/pelletier/go-toml/v2 v2.1.0 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.11 // indirect
go.opencensus.io v0.24.0 // indirect
golang.org/x/arch v0.4.0 // indirect
golang.org/x/crypto v0.12.0 // indirect
golang.org/x/net v0.14.0 // indirect
golang.org/x/arch v0.5.0 // indirect
golang.org/x/crypto v0.13.0 // indirect
golang.org/x/net v0.15.0 // indirect
golang.org/x/oauth2 v0.11.0 // indirect
golang.org/x/sync v0.3.0 // indirect
golang.org/x/sys v0.11.0 // indirect
golang.org/x/text v0.12.0 // indirect
golang.org/x/sys v0.12.0 // indirect
golang.org/x/text v0.13.0 // indirect
google.golang.org/api v0.136.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto v0.0.0-20230807174057-1744710a1577 // indirect
Expand Down
Loading

0 comments on commit 68c37e4

Please sign in to comment.