Skip to content

GAP-2624: Delete snyk workflow (#159) #336

GAP-2624: Delete snyk workflow (#159)

GAP-2624: Delete snyk workflow (#159) #336

Workflow file for this run

name: Push Image Workflow
on:
create:
push:
branches:
- release/**
- develop
paths-ignore:
- "*.md"
env:
AWS_REGION: eu-west-2
jobs:
test:
name: Test app
# Need to check here as create event can't be filtered by branch name: https://github.com/orgs/community/discussions/54860
if: github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/heads/release')
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@master
- name: Generate source files hash
id: source-file-hash
run: |
NAME=${{ hashFiles('**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx') }}
echo "name=$NAME" >> $GITHUB_OUTPUT
- name: Generate yarn lock hash
id: yarn-lock-hash
run: |
NAME=${{ hashFiles('**/yarn.lock') }}
echo "name=$NAME" >> $GITHUB_OUTPUT
- name: Generate .env files
run: cp .env.example .env
- name: Read .nvmrc
run: echo "name=NVMRC::$(cat .nvmrc)" >> $GITHUB_OUTPUT
id: nvm
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: "${{ steps.nvm.outputs.NVMRC }}"
cache: 'yarn'
- name: Install dependencies
run: yarn install --immutable
# Based on steps described here - https://nextjs.org/docs/pages/building-your-application/deploying/ci-build-caching#github-actions
- name: Next cache
uses: actions/cache@v3
with:
path: ${{ github.workspace }}/.next/cache
key: next-cache-${{ steps.yarn-lock-hash.outputs.name }}-${{ steps.source-file-hash.outputs.name }}
restore-keys: next-cache-${{ steps.yarn-lock-hash.outputs.name }}-
- name: Build application
run: yarn build
- name: Lint files
run: yarn lint
- name: Units Tests
run: yarn jest --ci
build:
# Need to check here as create event can't be filtered by branch name: https://github.com/orgs/community/discussions/54860
if: github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/heads/release')
name: Build docker image
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
outputs:
docker-image-name: ${{ steps.docker-image-name.outputs.name }}
steps:
- uses: actions/checkout@v3
with:
# Fetch all commits since we use the total commit count to determine the build version
fetch-depth: 0
- name: Setup AWS credentials
uses: aws-actions/configure-aws-credentials@v3
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
role-session-name: github-gap-find-web
aws-region: ${{ env.AWS_REGION }}
- name: Login to AWS ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2
- name: Determine & set BUILD_VERSION
run: |
GIT_COUNT=$(git rev-list $GITHUB_SHA --count)
echo "BUILD_VERSION=b_$GIT_COUNT" >> $GITHUB_ENV
echo BUILD_VERSION is ${{ env.BUILD_VERSION }}
- name: Generate .env files
run: cp .env.example .env
- name: Build Docker image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
run: docker build -t $ECR_REGISTRY/find-a-grant-client:${{ env.BUILD_VERSION }} .
- name: Generate Docker image name
id: docker-image-name
run: |
NAME=${{ (github.ref == 'refs/heads/develop' && 'find-dev-image') || (startsWith(github.ref, 'refs/heads/release') && 'find-qa-image') }}
echo "name=$NAME" >> $GITHUB_OUTPUT
- name: Save Docker image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
run: docker save --output ${{ steps.docker-image-name.outputs.name }}.tar $ECR_REGISTRY/find-a-grant-client:${{ env.BUILD_VERSION }}
- name: Upload Docker image
uses: actions/upload-artifact@v3
with:
name: ${{ steps.docker-image-name.outputs.name }}
path: ${{ steps.docker-image-name.outputs.name }}.tar
retention-days: 1
deploy:
name: Deploy docker image
needs: [build, test]
environment: AWS
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v3
with:
# Fetch all commits since we use the total commit count to determine the build version
fetch-depth: 0
- name: Setup AWS credentials
uses: aws-actions/configure-aws-credentials@v3
with:
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
role-session-name: github-gap-find-web
aws-region: ${{ env.AWS_REGION }}
- name: Login to AWS ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2
- name: Determine & set BUILD_VERSION
run: |
GIT_COUNT=$(git rev-list $GITHUB_SHA --count)
echo "BUILD_VERSION=b_$GIT_COUNT" >> $GITHUB_ENV
echo BUILD_VERSION is ${{ env.BUILD_VERSION }}
- name: Download Docker image
uses: actions/download-artifact@v3
with:
name: ${{ needs.build.outputs.docker-image-name }}
- name: Load Docker image
run: docker load --input ${{ needs.build.outputs.docker-image-name }}.tar
- name: Push Docker image to AWS ECR
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
run: docker push $ECR_REGISTRY/find-a-grant-client:${{ env.BUILD_VERSION }}
- name: Create env tag
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
run: |
ENV_TAG=${{ (github.ref == 'refs/heads/develop' && 'develop') || (startsWith(github.ref, 'refs/heads/release') && 'test') }}
docker tag $ECR_REGISTRY/find-a-grant-client:${{ env.BUILD_VERSION }} $ECR_REGISTRY/find-a-grant-client:$ENV_TAG
docker push $ECR_REGISTRY/find-a-grant-client:$ENV_TAG
- name: Create release tag - if we are committing to a release branch
if: ${{ startsWith(github.ref, 'refs/heads/release/') }}
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
run: |
RELEASE_VERSION=V_${GITHUB_REF##*/}
docker tag $ECR_REGISTRY/find-a-grant-client:${{ env.BUILD_VERSION }} $ECR_REGISTRY/find-a-grant-client:$RELEASE_VERSION
docker push $ECR_REGISTRY/find-a-grant-client:$RELEASE_VERSION