Skip to content

new change

new change #5

Workflow file for this run

name: Deploy to EKS
on:
push:
branches:
- main
env:
AWS_REGION: ap-south-1
ECR_REPOSITORY_BACKEND: demo-backend
ECR_REPOSITORY_FRONTEND: demo-frontend
EKS_CLUSTER_NAME: demo-eks
jobs:
deploy:
name: Build and Deploy
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v4
# ✅ Configure AWS Credentials
- 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-session-token: ${{ secrets.AWS_SESSION_TOKEN }}
aws-region: ap-south-1
- name: Verify AWS identity
run: aws sts get-caller-identity
# ✅ Login to ECR
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v2
# ✅ Build & Push Backend
- name: Build, tag, and push backend image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
IMAGE_TAG: ${{ github.sha }}
run: |
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY_BACKEND:$IMAGE_TAG ./app/backend
docker push $ECR_REGISTRY/$ECR_REPOSITORY_BACKEND:$IMAGE_TAG
docker tag $ECR_REGISTRY/$ECR_REPOSITORY_BACKEND:$IMAGE_TAG $ECR_REGISTRY/$ECR_REPOSITORY_BACKEND:latest
docker push $ECR_REGISTRY/$ECR_REPOSITORY_BACKEND:latest
# ✅ Build & Push Frontend
- name: Build, tag, and push frontend image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
IMAGE_TAG: ${{ github.sha }}
run: |
docker build -t $ECR_REGISTRY/$ECR_REPOSITORY_FRONTEND:$IMAGE_TAG ./app/frontend
docker push $ECR_REGISTRY/$ECR_REPOSITORY_FRONTEND:$IMAGE_TAG
docker tag $ECR_REGISTRY/$ECR_REPOSITORY_FRONTEND:$IMAGE_TAG $ECR_REGISTRY/$ECR_REPOSITORY_FRONTEND:latest
docker push $ECR_REGISTRY/$ECR_REPOSITORY_FRONTEND:latest
# ✅ Update kubeconfig
- name: Update kubeconfig
run: aws eks update-kubeconfig --name ${{ env.EKS_CLUSTER_NAME }} --region ap-south-1
# ✅ Deploy to EKS
- name: Deploy to EKS
run: |
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
sed -i "s/<ACCOUNT_ID>/$ACCOUNT_ID/g" k8s/service-account.yaml
sed -i "s/<ACCOUNT_ID>/$ACCOUNT_ID/g" k8s/backend-deployment.yaml
sed -i "s/<ACCOUNT_ID>/$ACCOUNT_ID/g" k8s/frontend-deployment.yaml
kubectl apply -f k8s/
kubectl rollout restart deployment/backend
kubectl rollout restart deployment/frontend