Skip to content

0.9.0

0.9.0 #3

Workflow file for this run

# Happens whenever a new tag is pushed
# (Commit is tagged after it has been tested)
#
# To create a new tag, package.json version also needs to be updated:
# $ npm version 0.5.0
# This will update `version` in package.json to `0.5.0` and create a new
# tag, `v0.5.0` in git. This tag will be used to tag a docker image before
# its push to AWS.
name: cd
on:
push:
# Whenever a new tag is pushed
tags:
# Any tag starting with v... should trigger this workflow.
- 'v**'
jobs:
# NOTE: this assumes our CI jobs have already passed previously
# (i.e., that we don't tag a commit manually until we know a build is working)
aws:
name: AWS
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
# Set up buildx for optimal Docker Builds, see:
# https://github.com/docker/setup-buildx-action
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Configure AWS Credentials using Secrets
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-session-token: ${{ secrets.AWS_SESSION_TOKEN }}
aws-region: us-east-1
# Login to our ECR repository using the configured credentials
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
# Build and Push an Image to Amazon ECR
- name: Build and push to Amazon ECR
env:
# Define an Environment Variable with ECR Registry, getting
# the value from the previous step's outputs
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPO: fragments
VERSION_TAG: ${{ github.ref_name }}
uses: docker/build-push-action@v4
with:
push: true
# Use 2 tags: :tag-version and :latest
tags: ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPO }}:${{ env.VERSION_TAG }}, ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPO }}:latest
# Update fragment's Task Definition JSON to use the newly updated Docker Image (i.e., the tag that was just pushed to ECR).
# Also update/set the environment variables if needed.
- name: Fill in the new image ID in the Amazon ECS task definition
id: update-task-def
uses: aws-actions/amazon-ecs-render-task-definition@v1
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPO: fragments
VERSION_TAG: ${{ github.ref_name }}
with:
task-definition: fragments-definition.json
container-name: fragments
# Use the image that was just just built and pushed to ECR for this tag
image: ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPO }}:${{ env.VERSION_TAG }}
environment-variables: |
LOG_LEVEL=info
NODE_ENV=production
AWS_COGNITO_POOL_ID=${{ secrets.AWS_COGNITO_POOL_ID }}
AWS_COGNITO_CLIENT_ID=${{ secrets.AWS_COGNITO_CLIENT_ID }}
API_URL=${{ secrets.API_URL }}
- name: Deploy Amazon ECS task definition
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
with:
task-definition: ${{ steps.update-task-def.outputs.task-definition }}
cluster: fragments-cluster
service: fragments-service
wait-for-service-stability: true