Skip to content

Update aha-uat-ci-cd.yml #3

Update aha-uat-ci-cd.yml

Update aha-uat-ci-cd.yml #3

Workflow file for this run

# This workflow will trigger pull requests and apply a label based on the
# paths that are modified in the pull request.
#
# To use this workflow, you will need to set up a .github/labeler.yml
# file with configuration. For more information, see:
# https://github.com/actions/labeler
name: AHA-UAT-CI-CD
# Controls when the workflow will run
on:
# Triggers the workflow on push events but only for the develop branch
workflow_dispatch:
inputs:
Tag_name:
description: Tag name of your release(please include "v")
required: true
jobs:
# CodeScan-ESLint:
# runs-on: ubuntu-latest
# steps:
# - name: Checkout Code
# uses: actions/checkout@v3
# with:
# fetch-depth: 0
# - name: Lint Code Base
# uses: github/super-linter@v4
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# LINTER_RULES_PATH: /
# TYPESCRIPT_ES_CONFIG_FILE: .eslintrc.json
# VALIDATE_TYPESCRIPT_ES: true
Github-ECR-Tag-Check:
runs-on: ubuntu-latest
steps:
- name: check tag
uses: mukunku/tag-exists-action@v1.2.0
id: checkTag
with:
tag: ${{ github.event.inputs.Tag_name }}
- name: Get release
if: ${{ steps.checkTag.outputs.exists == 'true' }}
id: result_release
uses: cardinalby/git-get-release-action@v1
env:
GITHUB_TOKEN: ${{ secrets.PAT_GITHUB }}
with:
tag: ${{ github.event.inputs.Tag_name }}
repo: REAN-Foundation/rean-admin-portal
- name: Configure AWS credentials
if: ${{ steps.checkTag.outputs.exists == 'true' }}
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Get ECR Image Tag
if: ${{ steps.checkTag.outputs.exists == 'true' }}
id: imageidvar
run: |
image_tag+=${{ steps.result_release.outputs.tag_name }} && image_tag+=_ && image_tag+=${{ steps.result_release.outputs.id }}
echo "imagetag_value=$(aws ecr-public describe-image-tags --repository-name rean-admin-portal --region us-east-1 --query "imageTagDetails[?imageTag=='$image_tag'].imageTag" --output text)" >> $GITHUB_OUTPUT
- name: ECR Image and Github Tag Check
run: |
if [[ ${{ steps.checkTag.outputs.exists }} == 'false' ]]; then exit 1; fi
if [[ -z "${{ steps.imageidvar.outputs.imagetag_value }}" ]]; then exit 1; fi
outputs:
release_name: ${{ steps.result_release.outputs.tag_name }}
release_id: ${{ steps.result_release.outputs.id }}
Deploy-ECS:
needs: Github-ECR-Tag-Check
environment: aha-uat
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Copy env file
run: aws s3 cp s3://${{ secrets.ENV_FILE_BUCKET_PATH }}/.env ./.env
- name: Declare some variables
id: vars
shell: bash
run: |
echo "branch=$(echo ${GITHUB_REF#refs/heads/} | sed "s/\\//-/g")" >> $GITHUB_OUTPUT
echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
echo "repo_name=$(echo "$GITHUB_REPOSITORY" | awk -F / '{print $2}')" >> $GITHUB_OUTPUT
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Amazon ECR
id: login-ecr

Check failure on line 113 in .github/workflows/aha-uat-ci-cd.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/aha-uat-ci-cd.yml

Invalid workflow file

You have an error in your yaml syntax on line 113
run: |
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
- name: Cache Docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Build and push
id: docker_build
uses: docker/build-push-action@v3
with:
context: ./
file: ./Dockerfile
builder: ${{ steps.buildx.outputs.name }}
build-args: ORIGIN=${{ env.ORIGIN }}
push: true
tags: ${{ steps.login-ecr.outputs.registry }}/rean-admin-portal:${{ steps.vars.outputs.branch }}_${{ steps.vars.outputs.sha_short }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache
- name: Download task definition
run: |
aws ecs describe-task-definition --task-definition ${{ secrets.TASK_DEFINTION_NAME }} \
--query taskDefinition > task-definition.json
- name: New image ID in the Amazon ECS task definition
id: task-def
uses: aws-actions/amazon-ecs-render-task-definition@v1
with:
task-definition: task-definition.json
container-name: default
image: public.ecr.aws/i9y2d4u3/rean-admin-portal:${{ needs.Github-ECR-Tag-Check.outputs.release_name }}_${{ needs.Github-ECR-Tag-Check.outputs.release_id }}
- name: Deploy Amazon ECS task definition
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
with:
task-definition: ${{ steps.task-def.outputs.task-definition }}
wait-for-service-stability: true
- name: Task Definition Variable
id: taskdefintionvar
shell: bash
run: |
echo "task_definition_arn=$(aws ecs describe-task-definition --task-definition ${{ secrets.TASK_DEFINTION_NAME }} | jq '.[] | .taskDefinitionArn')" >> $GITHUB_OUTPUT
- name: Task Defintion ARN
run: |
echo "Task Defintion: ${{ steps.taskdefintionvar.outputs.task_definition_arn }}"
- name: Deploy Amazon ECS task definition using Duplo API
uses: fjogeleit/http-request-action@master
with:
url: 'https://reanfoundation.duplocloud.net/subscriptions/${{ secrets.DUPLO_ID }}/UpdateEcsService'
method: 'POST'
data: '{"TaskDefinition":${{ steps.taskdefintionvar.outputs.task_definition_arn }},"Name": "${{ secrets.SERVICE_NAME }}","Replicas":1, "HealthCheckGracePeriodSeconds": 1200, "DnsPrfx": ""}'
bearerToken: ${{ secrets.DUPLOCLOUD_TOKEN }}