Skip to content

Merge pull request #46 from Sachintechjoomla/Issue#254011 #4

Merge pull request #46 from Sachintechjoomla/Issue#254011

Merge pull request #46 from Sachintechjoomla/Issue#254011 #4

name: Tag Build & Deploy Project Service (BRAC)
on:
push:
tags:
- "v*"
env:
AWS_REGION: ${{ secrets.AWS_REGION }}
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }}
ECR_REPOSITORY: ${{ secrets.ECR_REPOSITORY_BRAC }}
TAG: ${{ github.ref_name }}
jobs:
build-and-deploy:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v4
# =========================
# AWS Authentication
# =========================
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}
# =========================
# Login to Amazon ECR
# =========================
- name: Login to Amazon ECR
uses: aws-actions/amazon-ecr-login@v2
# =========================
# Build & Push Docker Image
# =========================
- name: Build and Push Docker Image to ECR
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: |
${{ env.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPOSITORY }}:${{ env.TAG }}
# =========================
# Deploy on QA Server
# =========================
- name: Deploy Stack to QA
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST_NAME_QA }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH_KEY }}
port: ${{ secrets.PORT }}
script: |
set -e
export AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }}
export AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }}
export AWS_REGION=${{ env.AWS_REGION }}
cd ${{ secrets.TARGET_DIR_QA }}
# Backup old env if exists
if [ -f .env ]; then
mv .env .env-bkp
fi
# Write env safely (MULTILINE SAFE)
cat << 'EOF' > .env
${{ secrets.QA_ENV_BRAC }}
EOF
aws ecr get-login-password --region ${AWS_REGION} \
| docker login \
--username AWS \
--password-stdin \
${{ env.AWS_ACCOUNT_ID }}.dkr.ecr.${AWS_REGION}.amazonaws.com
./deploy.sh ${{ env.TAG }}