Skip to content

Commit b9c9702

Browse files
added workflows for test and uat deployemnts, refactored dev deployment
refactored workflows Refactored deployment step, added loop Refactored deployment step, added loop Refactored deployment step, added loop Refactored deployment step, added loop Refactored deployment step, added loop Refactored deployment step, added loop divided to different workflows
1 parent ab8b7dd commit b9c9702

File tree

4 files changed

+137
-37
lines changed

4 files changed

+137
-37
lines changed
Lines changed: 4 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
1-
name: run_build_deploy
1+
name: run_build
22
on: [push, pull_request]
33

4-
env:
5-
AWS_REGION : "us-east-1"
6-
ECR_REPO: 917902836630.dkr.ecr.us-east-1.amazonaws.com/api-server
7-
84
permissions:
95
id-token: write
106
contents: read
@@ -23,6 +19,8 @@ jobs:
2319
ECR_ADDRESS: 917902836630.dkr.ecr.us-east-1.amazonaws.com
2420
TEST_COMMAND: sleep 1
2521
OUT_DIR: ./out
22+
AWS_REGION : "us-east-1"
23+
ECR_REPO: 917902836630.dkr.ecr.us-east-1.amazonaws.com/api-server
2624

2725
steps:
2826
- name: Git clone the repository
@@ -53,35 +51,4 @@ jobs:
5351
env-vars-for-codebuild: |
5452
GITHUB_ORGANIZATION, GITHUB_REPO_NAME, GITHUB_BRANCH_OR_TAG, GITHUB_REF, BUILD_NAME, BUILD_NUMBER, ECR_ADDRESS, TEST_COMMAND, ECR_REPO, OUT_DIR, DOCKER_USER, DOCKER_PASSWORD, REPORT_SERVER_PUBLIC_KEY
5553
56-
deploy_to_ecs:
57-
needs: run_codebuild_project
58-
runs-on: ubuntu-latest
59-
env:
60-
TASK_FAMILY: backend_api
61-
ECS_CLUSTER_NAME: cmiml-dev
62-
ECS_SERVICE_NAME: backend
63-
IMAGE_PREFIX: ${{ github.ref_name }}
64-
COMMIT_HASH: ${{ github.sha }}
65-
if: ${{ github.event_name == 'pull_request' && github.event.action == 'closed' }}
66-
steps:
67-
68-
- name: configure aws credentials
69-
uses: aws-actions/configure-aws-credentials@v3
70-
with:
71-
role-to-assume: arn:aws:iam::017925157769:role/cmiml-dev-oidc-github-role
72-
role-session-name: OIDC-GHA-session
73-
aws-region: ${{ env.AWS_REGION }}
74-
75-
- name: change image in the task definition
76-
run: |
77-
TASK_DEFINITION=$(aws ecs describe-task-definition --task-definition ${{ env.TASK_FAMILY }} --region ${{ env.AWS_REGION }})
78-
COMMIT_HASH_SHORT=$(echo $COMMIT_HASH | cut -c1-5)
79-
NEW_IMAGE=${IMAGE_PREFIX/\//-}-$COMMIT_HASH_SHORT
80-
NEW_TASK_DEFINTIION=$(echo $TASK_DEFINITION | jq --arg IMAGE "$ECR_REPO:$NEW_IMAGE" '.taskDefinition | .containerDefinitions[0].image = $IMAGE | del(.taskDefinitionArn) | del(.revision) | del(.status) | del(.requiresAttributes) | del(.compatibilities) | del(.registeredAt) | del(.registeredBy)')
81-
aws ecs register-task-definition --region ${{ env.AWS_REGION }} --cli-input-json "$NEW_TASK_DEFINTIION"
82-
83-
- name: update ECS service
84-
run: |
85-
aws ecs update-service --cluster ${{ env.ECS_CLUSTER_NAME }} --service ${{ env.ECS_SERVICE_NAME }} --task-definition ${{ env.TASK_FAMILY }}
86-
87-
54+

.github/workflows/run_deploy_dev.yaml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: deploy_to_dev
2+
on:
3+
workflow_run:
4+
workflows: ["run_build"]
5+
types:
6+
- completed
7+
jobs:
8+
9+
deploy_to_ecs:
10+
runs-on: ubuntu-latest
11+
env:
12+
TASK_FAMILY_PREFIX: backend
13+
ECS_CLUSTER_NAME: cmiml-dev
14+
ECS_SERVICE_NAME: backend
15+
ECR_REPO: 917902836630.dkr.ecr.us-east-1.amazonaws.com
16+
IMAGE_PREFIX: ${{ github.ref_name }}
17+
COMMIT_HASH: ${{ github.sha }}
18+
AWS_REGION : "us-east-1"
19+
if: ${{ github.event_name == 'pull_request' && github.event.action == 'closed' }}
20+
steps:
21+
22+
- name: configure aws credentials
23+
uses: aws-actions/configure-aws-credentials@v3
24+
with:
25+
role-to-assume: arn:aws:iam::017925157769:role/cmiml-dev-oidc-github-role
26+
role-session-name: OIDC-GHA-session
27+
aws-region: ${{ env.AWS_REGION }}
28+
29+
- name: change image in the task definitions and update services
30+
run: |
31+
NEW_IMAGE=${IMAGE_PREFIX/\//-}-$(echo $COMMIT_HASH | cut -c1-5)
32+
33+
for app in api worker scheduler; do
34+
NEW_TASK_DEFINITION=$(aws ecs describe-task-definition --task-definition ${TASK_FAMILY_PREFIX}_${app} --region ${AWS_REGION} | jq --arg IMAGE "$ECR_REPO:$NEW_IMAGE" '.taskDefinition | .containerDefinitions[0].image = $IMAGE | del(.taskDefinitionArn) | del(.revision) | del(.status) | del(.requiresAttributes) | del(.compatibilities) | del(.registeredAt) | del(.registeredBy)')
35+
aws ecs register-task-definition --region ${{ env.AWS_REGION }} --cli-input-json "$NEW_TASK_DEFINTIION"
36+
aws ecs update-service --cluster ${{ env.ECS_CLUSTER_NAME }} --service ${{ env.ECS_SERVICE_NAME }}_${app} --task-definition ${TASK_FAMILY_PREFIX}_${app}
37+
done
38+
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: deploy_to_test
2+
on:
3+
workflow_run:
4+
workflows: ["run_build"]
5+
types:
6+
- completed
7+
8+
permissions:
9+
id-token: write
10+
contents: read
11+
12+
jobs:
13+
14+
deploy_to_ecs:
15+
runs-on: ubuntu-latest
16+
if: ${{ github.ref_name == v[0-9]+.[0-9]+.[0-9]+([0-9]+)+-+rc(.+) }}
17+
env:
18+
TASK_FAMILY: backend_api
19+
ECS_CLUSTER_NAME: cmiml-test
20+
ECS_SERVICE_NAME: backend
21+
AWS_REGION : "us-east-1"
22+
ECR_REPO: 917902836630.dkr.ecr.us-east-1.amazonaws.com/api-server
23+
IMAGE_PREFIX: ${{ github.ref_name }}
24+
COMMIT_HASH: ${{ github.sha }}
25+
steps:
26+
27+
- name: Git clone the repository
28+
uses: actions/checkout@v4
29+
30+
- name: configure aws credentials
31+
uses: aws-actions/configure-aws-credentials@v3
32+
with:
33+
role-to-assume: arn:aws:iam::641513112151:role/cmiml-devops-oidc-github-role
34+
role-session-name: OIDC-GHA-session
35+
aws-region: ${{ env.AWS_REGION }}
36+
37+
- name: change image in the task definitions and update services
38+
run: |
39+
NEW_IMAGE=${IMAGE_PREFIX/\//-}-$(echo $COMMIT_HASH | cut -c1-5)
40+
41+
for app in api worker scheduler; do
42+
NEW_TASK_DEFINITION=$(aws ecs describe-task-definition --task-definition ${TASK_FAMILY_PREFIX}_${app} --region ${AWS_REGION} | jq --arg IMAGE "$ECR_REPO:$NEW_IMAGE" '.taskDefinition | .containerDefinitions[0].image = $IMAGE | del(.taskDefinitionArn) | del(.revision) | del(.status) | del(.requiresAttributes) | del(.compatibilities) | del(.registeredAt) | del(.registeredBy)')
43+
aws ecs register-task-definition --region ${{ env.AWS_REGION }} --cli-input-json "$NEW_TASK_DEFINTIION"
44+
aws ecs update-service --cluster ${{ env.ECS_CLUSTER_NAME }} --service ${{ env.ECS_SERVICE_NAME }}_${app} --task-definition ${TASK_FAMILY_PREFIX}_${app}
45+
done
46+

.github/workflows/run_deploy_uat.yaml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
name: deploy_to_uat
2+
on:
3+
workflow_run:
4+
workflows: ["run_build"]
5+
types:
6+
- completed
7+
8+
permissions:
9+
id-token: write
10+
contents: read
11+
12+
jobs:
13+
14+
deploy_to_ecs:
15+
runs-on: ubuntu-latest
16+
if: ${{ github.ref_name == v[0-9]+.[0-9]+.[0-9]+([0-9]+)+-+rc(.+) }}
17+
env:
18+
TASK_FAMILY: backend_api
19+
ECS_CLUSTER_NAME: cmiml-uat
20+
ECS_SERVICE_NAME: backend
21+
ECR_URL: 917902836630.dkr.ecr.us-east-1.amazonaws.com
22+
IMAGE_PREFIX: ${{ github.ref_name }}
23+
COMMIT_HASH: ${{ github.sha }}
24+
AWS_REGION : "us-east-1"
25+
ECR_REPO: 917902836630.dkr.ecr.us-east-1.amazonaws.com/api-server
26+
steps:
27+
28+
- name: Git clone the repository
29+
uses: actions/checkout@v4
30+
31+
- name: configure aws credentials
32+
uses: aws-actions/configure-aws-credentials@v3
33+
with:
34+
role-to-assume: arn:aws:iam::641513112151:role/cmiml-devops-oidc-github-role
35+
role-session-name: OIDC-GHA-session
36+
aws-region: ${{ env.AWS_REGION }}
37+
38+
- name: change image in the task definition
39+
run: |
40+
TASK_DEFINITION=$(aws ecs describe-task-definition --task-definition ${{ env.TASK_FAMILY }} --region ${{ env.AWS_REGION }})
41+
COMMIT_HASH_SHORT=$(echo $COMMIT_HASH | cut -c1-5)
42+
NEW_IMAGE=${IMAGE_PREFIX/\//-}-$COMMIT_HASH_SHORT
43+
echo $NEW_IMAGE
44+
NEW_TASK_DEFINTIION=$(echo $TASK_DEFINITION | jq --arg IMAGE "$ECR_REPO:$NEW_IMAGE" '.taskDefinition | .containerDefinitions[0].image = $IMAGE | del(.taskDefinitionArn) | del(.revision) | del(.status) | del(.requiresAttributes) | del(.compatibilities) | del(.registeredAt) | del(.registeredBy)')
45+
aws ecs register-task-definition --region ${{ env.AWS_REGION }} --cli-input-json "$NEW_TASK_DEFINTIION"
46+
47+
- name: update ECS service
48+
run: |
49+
aws ecs update-service --cluster ${{ env.ECS_CLUSTER_NAME }} --service ${{ env.ECS_SERVICE_NAME }} --task-definition ${{ env.TASK_FAMILY }}

0 commit comments

Comments
 (0)