From 288bc17ffebc550541d8f09d7bff8ec82888c214 Mon Sep 17 00:00:00 2001 From: Andrew Trieu Date: Sat, 23 Nov 2024 18:29:38 +0200 Subject: [PATCH] feat: Add GitHub Actions workflow for Amplify deployment and configuration --- .github/workflows/amplify-deployment.yml | 79 ++++++++++++++++++++++++ tasker-client/amplify.yml | 25 ++++++++ 2 files changed, 104 insertions(+) create mode 100644 .github/workflows/amplify-deployment.yml create mode 100644 tasker-client/amplify.yml diff --git a/.github/workflows/amplify-deployment.yml b/.github/workflows/amplify-deployment.yml new file mode 100644 index 0000000..88c58ac --- /dev/null +++ b/.github/workflows/amplify-deployment.yml @@ -0,0 +1,79 @@ +name: Set Amplify Environment Variables and Trigger Deployment + +permissions: + id-token: write + contents: read + +on: + push: + branches: + - main + paths: + - "tasker-client/**" + +jobs: + checkout-code: + runs-on: ubuntu-latest + steps: + - name: Checkout Code + uses: actions/checkout@v3 + + install-cli: + runs-on: ubuntu-latest + needs: checkout-code + steps: + - name: Install AWS CLI + run: | + curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" + unzip awscliv2.zip + sudo ./aws/install + + - name: Verify AWS CLI Installation + run: aws --version + + - name: Install Amplify CLI + run: | + npm install -g @aws-amplify/cli + + - name: Verify Amplify CLI Installation + run: amplify --version + + add-credentials: + runs-on: ubuntu-latest + needs: install-cli + steps: + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v3 + with: + role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} + aws-region: ${{ secrets.AWS_REGION }} + + deploy-amplify: + runs-on: ubuntu-latest + needs: [checkout-code, add-credentials, install-cli] + steps: + - name: Fetch API URL from SSM + id: fetch-ssm + run: | + export NEXT_PUBLIC_API_BASE_URL=$(aws ssm get-parameter --name "/tasker/api/base-url" --query "Parameter.Value" --output text) + export NEXT_PUBLIC_COGNITO_USER_POOL_ID=$(aws ssm get-parameter --name "/tasker/cognito/user-pool-id" --query "Parameter.Value" --output text) + export NEXT_PUBLIC_COGNITO_USER_POOL_CLIENT_ID=$(aws ssm get-parameter --name "/tasker/cognito/client-id" --query "Parameter.Value" --output text) + export S3_PUBLIC_IMAGE_URL=$(aws ssm get-parameter --name "/tasker/s3/public-images-url" --query "Parameter.Value" --output text) + + echo "NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL" >> $GITHUB_ENV + echo "NEXT_PUBLIC_COGNITO_USER_POOL_ID=$NEXT_PUBLIC_COGNITO_USER_POOL_ID" >> $GITHUB_ENV + echo "NEXT_PUBLIC_COGNITO_USER_POOL_CLIENT_ID=$NEXT_PUBLIC_COGNITO_USER_POOL_CLIENT_ID" >> $GITHUB_ENV + echo "S3_PUBLIC_IMAGE_URL=$S3_PUBLIC_IMAGE_URL" >> $GITHUB_ENV + + - name: Set Amplify Environment Variables + run: | + amplify env set NEXT_PUBLIC_API_BASE_URL=$NEXT_PUBLIC_API_BASE_URL + amplify env set NEXT_PUBLIC_COGNITO_USER_POOL_ID=$NEXT_PUBLIC_COGNITO_USER_POOL_ID + amplify env set NEXT_PUBLIC_COGNITO_USER_POOL_CLIENT_ID=$NEXT_PUBLIC_COGNITO_USER_POOL_CLIENT_ID + amplify env set S3_PUBLIC_IMAGE_URL=$S3_PUBLIC_IMAGE_URL + + - name: Deploy Amplify App + run: | + aws amplify start-deployment \ + --app-id ${{ secrets.AWS_AMPLIFY_APP_ID }} \ + --branch-name main diff --git a/tasker-client/amplify.yml b/tasker-client/amplify.yml new file mode 100644 index 0000000..7893ca6 --- /dev/null +++ b/tasker-client/amplify.yml @@ -0,0 +1,25 @@ +version: 1.0 +frontend: + phases: + preBuild: + commands: + - cd tasker-client + - npm ci + build: + commands: + - cd tasker-client + - npm run build + artifacts: + baseDirectory: tasker-client/.next + files: + - "**/*" + cache: + paths: + - tasker-client/node_modules/**/* +env: + variables: + # To be populated by GitHub Actions + NEXT_PUBLIC_API_BASE_URL: "" + NEXT_PUBLIC_COGNITO_USER_POOL_ID: "" + NEXT_PUBLIC_COGNITO_USER_POOL_CLIENT_ID: "" + S3_PUBLIC_IMAGE_URL: ""