1515 required : true
1616 type : string
1717 description : Provide tag (Eg:v3.14.0)
18-
18+ permissions :
19+ id-token : write
20+ contents : write
21+ packages : read
22+ actions : read
1923env :
20- SERVICE_NAME : conductor-server
24+ SERVICE_NAME : conductor
2125 AWS_REGION : " ap-south-1"
22-
26+ HELM_CHART_NAME : " application-helm-chart "
2327
2428jobs :
2529 prepare-env :
2630 name : Prepare Env
27- runs-on : ' ubuntu-latest'
31+ runs-on : " ubuntu-latest"
2832 timeout-minutes : 2
2933 outputs :
3034 AWS_ROLE : ${{ steps.vars.outputs.AWS_ROLE }}
3135 ENV : ${{ steps.vars.outputs.ENV }}
3236 PROJECT_PREFIX : ${{ steps.vars.outputs.PROJECT_PREFIX }}
33- ECS_CLUSTER : ${{ steps.set_env.outputs.ECS_CLUSTER }}
34- ECS_SERVICE : ${{ steps.set_env.outputs.ECS_SERVICE }}
35- TASK_DEFINITION : ${{ steps.set_env.outputs.TASK_DEFINITION }}
36- CONTAINER_NAME : ${{ steps.set_env.outputs.CONTAINER_NAME }}
37+ K8S_CLUSTER : ${{ steps.set_env.outputs.K8S_CLUSTER }}
3738 ECR_REPOSITORY : ${{ steps.set_env.outputs.ECR_REPOSITORY }}
39+ ENVIRONMENT_BUCKET : ${{ steps.set_env.outputs.ENVIRONMENT_BUCKET }}
3840 SLACK_WEBHOOK_URL : ${{ steps.vars.outputs.SLACK_WEBHOOK_URL }}
39-
41+ AWS_ACCOUNT_ID : ${{ steps.vars.outputs.AWS_ACCOUNT_ID}}
42+
4043 steps :
4144 - id : vars
4245 shell : bash
4548 ENV=${{ github.event.inputs.environment }}
4649 IMAGE_TAG=${{ github.event.inputs.tag }}
4750 echo $BRANCH
48-
51+
4952 if [ -z "$ENV" ]
5053 then
5154 case $BRANCH in
@@ -67,17 +70,20 @@ jobs:
6770 then
6871 echo "AWS_ROLE=PRD_AWS_ROLE" >> $GITHUB_OUTPUT
6972 echo "PROJECT_PREFIX=sirn-prd-mb" >> $GITHUB_OUTPUT
70- echo "SLACK_WEBHOOK_URL=PRD_SLACK_WEBHOOK_URL" >> $GITHUB_OUTPUT
73+ echo "SLACK_WEBHOOK_URL=PRD_SLACK_WEBHOOK_URL" >> $GITHUB_OUTPUT
74+ echo "AWS_ACCOUNT_ID=PRD_AWS_ACCOUNT_ID" >> $GITHUB_OUTPUT
7175 elif [ $ENV == 'stg' ]
7276 then
7377 echo "AWS_ROLE=STG_AWS_ROLE" >> $GITHUB_OUTPUT
7478 echo "PROJECT_PREFIX=sirn-stg-mb" >> $GITHUB_OUTPUT
75- echo "SLACK_WEBHOOK_URL=DEV_SLACK_WEBHOOK_URL" >> $GITHUB_OUTPUT
79+ echo "SLACK_WEBHOOK_URL=DEV_SLACK_WEBHOOK_URL" >> $GITHUB_OUTPUT
80+ echo "AWS_ACCOUNT_ID=NON_PRD_AWS_ACCOUNT_ID" >> $GITHUB_OUTPUT
7681 elif [ $ENV == 'dev' ]
7782 then
7883 echo "AWS_ROLE=DEV_AWS_ROLE" >> $GITHUB_OUTPUT
7984 echo "PROJECT_PREFIX=sirn-dev-mb" >> $GITHUB_OUTPUT
8085 echo "SLACK_WEBHOOK_URL=DEV_SLACK_WEBHOOK_URL" >> $GITHUB_OUTPUT
86+ echo "AWS_ACCOUNT_ID=NON_PRD_AWS_ACCOUNT_ID" >> $GITHUB_OUTPUT
8187 else
8288 echo "Branch not configured!"
8389 exit 1
@@ -89,68 +95,52 @@ jobs:
8995 id : set_env
9096 run : |
9197 PROJECT_PREFIX=${{ steps.vars.outputs.PROJECT_PREFIX }}
92- echo "ECR_REPOSITORY=$PROJECT_PREFIX-ecr-$SERVICE_NAME" >> $GITHUB_OUTPUT
93- echo "ECS_CLUSTER=$PROJECT_PREFIX-ecs-cluster" >> $GITHUB_OUTPUT
94- echo "ECS_SERVICE=$PROJECT_PREFIX-svc-$SERVICE_NAME" >> $GITHUB_OUTPUT
95- echo "TASK_DEFINITION=$PROJECT_PREFIX-td-$SERVICE_NAME" >> $GITHUB_OUTPUT
96- echo "CONTAINER_NAME=$PROJECT_PREFIX-cntr-$SERVICE_NAME" >> $GITHUB_OUTPUT
98+ echo "K8S_CLUSTER=$PROJECT_PREFIX-prime" >> $GITHUB_OUTPUT
99+ echo "ENVIRONMENT_BUCKET=$PROJECT_PREFIX-s3-environment" >> $GITHUB_OUTPUT
97100 echo ":seedling: Branch:${GITHUB_REF#refs/heads/}" >> $GITHUB_STEP_SUMMARY
98-
101+ echo "ECR_REPOSITORY=$PROJECT_PREFIX-ecr-conductor-server" >> $GITHUB_OUTPUT
102+
99103 # Deploy Conductor UI Image to ECS
100- deploy-server-image :
101- name : Deploy Server Image
102- runs-on : ' ubuntu-latest'
103- timeout-minutes : 20
104+ deploy-to-k8s :
105+ name : Deploy to k8s
106+ runs-on : ubuntu-latest
107+ container :
108+ image : public.ecr.aws/kvsiren-dev/pipeline/helm-deploy:latest
109+ timeout-minutes : 15
104110 permissions :
105111 id-token : write
106112 pull-requests : write
107113 contents : read
108- needs : prepare-env
114+ needs :
115+ - prepare-env
109116 env :
110- AWS_ROLE : ${{ needs.prepare-env.outputs.AWS_ROLE }}
111- ENV : ${{ needs.prepare-env.outputs.ENV }}
112- PROJECT_PREFIX : ${{needs.prepare-env.outputs.PROJECT_PREFIX}}
113- ECR_REPOSITORY : ${{needs.prepare-env.outputs.ECR_REPOSITORY}}
114- IMAGE_TAG : ${{ github.event.inputs.tag }}
115- ECS_CLUSTER : ${{ needs.prepare-env.outputs.ECS_CLUSTER }}
116- ECS_SERVICE : ${{ needs.prepare-env.outputs.ECS_SERVICE }}
117- TASK_DEFINITION : ${{ needs.prepare-env.outputs.TASK_DEFINITION }}
118- CONTAINER_NAME : ${{ needs.prepare-env.outputs.CONTAINER_NAME }}
119-
117+ AWS_ACCOUNT_ID : ${{ needs.prepare-env.outputs.AWS_ACCOUNT_ID }}
118+ ECR_REPOSITORY : ${{ needs.prepare-env.outputs.ECR_REPOSITORY }}
120119 steps :
121120 - name : Checkout code from action
122121 uses : actions/checkout@v2
123122
124123 - name : Configure AWS credentials
125124 uses : aws-actions/configure-aws-credentials@v4
126125 with :
127- role-to-assume : ${{ secrets [env.AWS_ROLE ] }}
126+ role-to-assume : arn:aws:iam:: ${{ vars [env.AWS_ACCOUNT_ID ] }}:role/github-actions
128127 aws-region : ${{ env.AWS_REGION }}
129128
130- - name : Amazon ECR Login
131- id : login-ecr
132- uses : aws-actions/amazon-ecr-login@v1.7.0
129+ - name : Deploy to Kubernetes
130+ shell : bash
131+ run : |
132+ aws eks update-kubeconfig --name ${{ needs.prepare-env.outputs.K8S_CLUSTER }}
133+ aws s3 cp s3://${{ needs.prepare-env.outputs.ENVIRONMENT_BUCKET }}/helm/${{ env.SERVICE_NAME }}/values.yaml ./values.yaml
134+ cat ./values.yaml
135+ aws ecr get-login-password --region ${{ env.AWS_REGION }} | helm registry login --username AWS --password-stdin ${{ vars[env.AWS_ACCOUNT_ID] }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com
133136
134- - name : Check if image tag exists in ECR
135- id : check-image-existence
136- run : |
137- if aws ecr describe-images --repository-name "${{ env.ECR_REPOSITORY }}" --region "${{ env.AWS_REGION }}" --image-ids imageTag="${{ env.IMAGE_TAG }}" 2>&1 | grep -q "imageTag"; then
138- echo "Image tag $IMAGE_TAG exists in ECR"
139- else
140- echo "Error: Image tag $IMAGE_TAG does not exist in ECR"
141- exit 1
142- fi
137+ # Construct base Helm command
138+ HELM_CMD="helm upgrade --install ${{ env.SERVICE_NAME }} oci://${{ vars[env.AWS_ACCOUNT_ID] }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.HELM_CHART_NAME }} \
139+ --namespace ${{ needs.prepare-env.outputs.ENV }} \
140+ --values values.yaml \
141+ --set default.image.repository='${{ vars[env.AWS_ACCOUNT_ID] }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPOSITORY }}' \
142+ --set default.image.tag='${{ github.event.inputs.tag }}'"
143143
144- - name : Deploy backend
145- id : deploy_backend
146- uses : ./.github/actions/deploy-ecs
147- env :
148- APP_IMAGE : ${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}
149- with :
150- aws-region : ${{ env.AWS_REGION }}
151- aws-role : ${{ secrets[env.AWS_ROLE] }}
152- task-definition : ${{ env.TASK_DEFINITION }}
153- container-name : ${{ env.CONTAINER_NAME }}
154- ecs-service : ${{ env.ECS_SERVICE }}
155- ecs-cluster : ${{ env.ECS_CLUSTER }}
156- image : ${{ env.APP_IMAGE }}
144+ # Run the Helm command
145+ echo "Running: $HELM_CMD"
146+ eval $HELM_CMD
0 commit comments