In this section, we will create a GitHub Action to automatically deploy our Client App to AWS S3. You can view the code here.
Create Repository Secrets
We will add the following secrets to the repository:
-
AWS_ACCESS_KEY_ID
→ Access key obtained from the.csv
file in the previous section -
AWS_SECRET_ACCESS_KEY
→ Secret key obtained from the.csv
file in the previous section -
AWS_S3_BUCKET
→ The name of the S3 bucket
Create Repository Variables
Next, we will add the API URL for our app, which we obtain from API Gateway.
Create Github Action File
The final step is to create the deploy.yml
file. The build file consists of installing the dependencies and building the client app. Then, we use jakejarvis/s3-sync-action
to upload the build file to the S3.
name: Upload Website on: pull_request: branches: - main jobs: build: runs-on: ubuntu-latest env: VITE_API_URL: ${{ vars.VITE_API_URL }} steps: - name: Checkout repo uses: actions/checkout@v3 - name: Setup Node uses: actions/setup-node@v3 - name: Install dependencies run: yarn - name: Build app run: yarn workspace client build - name: Upload to S3s uses: jakejarvis/s3-sync-action@master with: args: --acl private --follow-symlinks --delete env: SOURCE_DIR: apps/client/dist AWS_S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
To trigger the build, you need to create a pull request (PR) to the main branch and merge it. Afterward, the GitHub Action will run.
Then, when we check the S3 bucket, we can see that the file has already been uploaded.
Top comments (0)