Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 72 additions & 36 deletions .github/workflows/CD.yml
Original file line number Diff line number Diff line change
@@ -1,54 +1,90 @@
name: CD
name: AWS CD

on:
push:
branches:
- dev
- homolog
- prod

workflow_dispatch:

jobs:
DeployToAWS:
environment:
name: ${{ github.ref_name }}
name: ${{ github.ref_name }}
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read

steps:
- uses: actions/checkout@v2

- name: Setup AWS Credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-region: ${{ vars.AWS_REGION }}
role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/GithubActionsRole
role-session-name: github-action

- name: Setting stage and stack name
run: |
echo "STACK_NAME=DevMediasStack${{github.ref_name}}" >> $GITHUB_ENV

- name: Installing Dependencies
run: |
npm install -g aws-cdk
cd iac
pip install -r requirements.txt


- name: DeployWithCDK
run: |
cd iac
cdk synth
cdk deploy --require-approval never
env:
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }}
AWS_REGION: ${{ vars.AWS_REGION }}
STACK_NAME: ${{ env.STACK_NAME }}
GITHUB_REF_NAME: ${{ github.ref_name }}
FROM_EMAIL: ${{ vars.FROM_EMAIL }}
HIDDEN_COPY: ${{ vars.HIDDEN_COPY }}
REPLY_TO_EMAIL: ${{ vars.REPLY_TO_EMAIL }}
- uses: actions/checkout@v3

- name: Determine AWS Account ID
run: |
case "${{ github.ref_name }}" in
dev)
echo "AWS_ACCOUNT_ID=${{ secrets.AWS_ACCOUNT_ID_DEV }}" >> $GITHUB_ENV
;;
homolog)
echo "AWS_ACCOUNT_ID=${{ secrets.AWS_ACCOUNT_ID_HOML }}" >> $GITHUB_ENV
;;
prod)
echo "AWS_ACCOUNT_ID=${{ secrets.AWS_ACCOUNT_ID_PROD }}" >> $GITHUB_ENV
;;
*)
echo "Invalid branch name: ${GITHUB_REF_NAME}" >&2
exit 1
;;
esac

- name: Setup AWS Credentials
uses: aws-actions/configure-aws-credentials@v2
with:
aws-region: us-east-1
role-to-assume: arn:aws:iam::${{ env.AWS_ACCOUNT_ID }}:role/GithubActionsRole
role-session-name: github-action
role-duration-seconds: 3600

- name: Compute Stack & Project Names
run: |
PROJECT_NAME=$(echo "${{ github.event.repository.name }}" \
| sed -E 's/[-_]+/ /g' \
| awk '{for(i=1;i<=NF;i++) $i=toupper(substr($i,1,1)) substr($i,2)}1' \
| tr -d ' ')
# Sanitiza o nome do branch
SANITIZED_BRANCH=$(echo "${{ github.ref_name }}" | tr '/' '-')
STACK_NAME="${PROJECT_NAME}StackSimpleFastAPI${SAFE_REF}"

echo "PROJECT_NAME=${PROJECT_NAME}" >> $GITHUB_ENV
echo "SANITIZED_BRANCH=${SANITIZED_BRANCH}" >> $GITHUB_ENV
echo "STACK_NAME=${PROJECT_NAME}StackSimpleFastAPI${SANITIZED_BRANCH}" >> $GITHUB_ENV

- name: Install Dependencies
run: |
npm install -g aws-cdk
cd iac
pip install -r requirements.txt

- name: Inject Required Envs
run: |
echo "AWS_REGION=us-east-1" >> $GITHUB_ENV
echo "GITHUB_REF_NAME=${{ github.ref_name }}" >> $GITHUB_ENV
echo "FROM_EMAIL=${{ secrets.FROM_EMAIL }}" >> $GITHUB_ENV
echo "REPLY_TO_EMAIL=${{ secrets.REPLY_TO_EMAIL }}" >> $GITHUB_ENV
echo "HIDDEN_COPY=${{ secrets.HIDDEN_COPY }}" >> $GITHUB_ENV

- name: CDK Deploy
run: |
cd iac
cdk synth
cdk deploy --require-approval never
env:
AWS_ACCOUNT_ID: ${{ env.AWS_ACCOUNT_ID }}
AWS_REGION: ${{ env.AWS_REGION }}
STACK_NAME: ${{ env.STACK_NAME }}
GITHUB_REF_NAME: ${{ env.GITHUB_REF_NAME }}
FROM_EMAIL: ${{ env.FROM_EMAIL }}
REPLY_TO_EMAIL: ${{ env.REPLY_TO_EMAIL }}
HIDDEN_COPY: ${{ env.HIDDEN_COPY }}