Skip to content

Commit 7e331ff

Browse files
xiaoyao00nhoktenz
andauthored
Qa (#6)
* create dev branch and modify deploy to automatically deploy * Trigger deployment * update docker build push actions * update aws_account_id variable * add AWS_ACCOUNT_ID in env * add inputs.tier * update deploy script * update the role name * update role as github-actions-cicd * update cache mode and move env block * add timeout, change to inline cache, modify cicd role * update cache image name * separate data import workflow * update videos url (#5) * update videos url * update url link for video --------- Co-authored-by: Thuong Nguyen <6723699+nhoktenz@users.noreply.github.com>
1 parent 2daa881 commit 7e331ff

3 files changed

Lines changed: 111 additions & 41 deletions

File tree

.github/workflows/data-import.yml

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
name: Data Import to AWS ECS
2+
on:
3+
workflow_dispatch:
4+
inputs:
5+
tier:
6+
description: 'Deployment tier'
7+
required: true
8+
type: choice
9+
options:
10+
- dev
11+
- qa
12+
- stage
13+
- prod
14+
15+
jobs:
16+
data-import:
17+
timeout-minutes: 60
18+
runs-on: ubuntu-latest
19+
environment: ${{ inputs.tier }}
20+
env:
21+
APP: icdgenie
22+
AWS_REGION: us-east-1
23+
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }}
24+
DATA_IMPORT_CONTAINER_PORT: 9000
25+
permissions:
26+
id-token: write
27+
contents: read
28+
29+
steps:
30+
- name: Checkout code
31+
uses: actions/checkout@v5
32+
33+
- name: Configure AWS credentials
34+
uses: aws-actions/configure-aws-credentials@v5.1.0
35+
with:
36+
role-to-assume: arn:aws:iam::${{ env.AWS_ACCOUNT_ID }}:role/power-user-github-actions-cicd
37+
aws-region: ${{ env.AWS_REGION }}
38+
39+
- name: Setup environment variables
40+
run: |
41+
echo "TIER=${{ inputs.tier }}" >> $GITHUB_ENV
42+
echo "TIER_UPPER=$(echo ${{ inputs.tier }} | tr '[:lower:]' '[:upper:]')" >> $GITHUB_ENV
43+
echo "DATETIME=$(date +%Y%m%d%H%M%S)" >> $GITHUB_ENV
44+
echo "APP_GIT_TAG=${GITHUB_SHA::7}" >> $GITHUB_ENV
45+
echo "PARAMETER_PATH=/analysistools/${{ inputs.tier }}/${{ env.APP }}" >> $GITHUB_ENV
46+
if [[ "${{ inputs.tier }}" == "prod" || "${{ inputs.tier }}" == "stage" ]]; then
47+
echo "IMAGE_TIER=release" >> $GITHUB_ENV
48+
else
49+
echo "IMAGE_TIER=development" >> $GITHUB_ENV
50+
fi
51+
52+
- name: Set Docker registry and repository
53+
run: |
54+
echo "DOCKER_REGISTRY=${{ env.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com" >> $GITHUB_ENV
55+
echo "IMAGE_REPOSITORY=${{ env.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.APP }}" >> $GITHUB_ENV
56+
57+
- name: Set data import image tags
58+
run: |
59+
echo "DATA_IMPORT_IMAGE=${{ env.IMAGE_REPOSITORY }}:${{ env.IMAGE_TIER }}-data-import-${{ env.APP_GIT_TAG }}-${{ env.DATETIME }}" >> $GITHUB_ENV
60+
echo "DATA_IMPORT_IMAGE_LATEST=${{ env.IMAGE_REPOSITORY }}:${{ env.IMAGE_TIER }}-data-import-latest" >> $GITHUB_ENV
61+
62+
- name: Retrieve AWS SSM parameters
63+
run: |
64+
PARAMS=$(aws ssm get-parameters-by-path --path ${{ env.PARAMETER_PATH }} --output json)
65+
echo "SUBNET_IDS=$(echo $PARAMS | jq -r '.Parameters[] | select(.Name=="${{ env.PARAMETER_PATH }}/subnet_ids") | .Value')" >> $GITHUB_ENV
66+
echo "SECURITY_GROUP_IDS=$(echo $PARAMS | jq -r '.Parameters[] | select(.Name=="${{ env.PARAMETER_PATH }}/security_group_ids") | .Value')" >> $GITHUB_ENV
67+
echo "ECS_CLUSTER=$(echo $PARAMS | jq -r '.Parameters[] | select(.Name=="${{ env.PARAMETER_PATH }}/ecs_cluster") | .Value')" >> $GITHUB_ENV
68+
echo "ECS_DATA_IMPORT_TASK=$(echo $PARAMS | jq -r '.Parameters[] | select(.Name=="${{ env.PARAMETER_PATH }}/ecs_data_import_task") | .Value')" >> $GITHUB_ENV
69+
70+
- name: Login to Amazon ECR
71+
run: aws ecr get-login-password | docker login --username AWS --password-stdin ${{ env.DOCKER_REGISTRY }}
72+
73+
- name: Set up Docker Buildx
74+
uses: docker/setup-buildx-action@v3
75+
76+
- name: Build and push data import image
77+
uses: docker/build-push-action@v5
78+
with:
79+
context: .
80+
file: docker/data-import.dockerfile
81+
push: true
82+
tags: |
83+
${{ env.DATA_IMPORT_IMAGE }}
84+
${{ env.DATA_IMPORT_IMAGE_LATEST }}
85+
cache-from: type=registry,ref=${{ env.DATA_IMPORT_IMAGE_LATEST }}
86+
cache-to: type=inline
87+
88+
- name: Prepare data-import task definition
89+
run: |
90+
mkdir -p ecs-tasks
91+
envsubst < .github/aws/data-import.yml > ecs-tasks/data-import.yml
92+
93+
- name: Register data import task definition
94+
run: aws ecs register-task-definition --cli-input-yaml file://ecs-tasks/data-import.yml
95+
96+
- name: Run data import task
97+
run: |
98+
aws ecs run-task \
99+
--cluster ${{ env.ECS_CLUSTER }} \
100+
--count 1 \
101+
--launch-type FARGATE \
102+
--network-configuration "awsvpcConfiguration={subnets=[${{ env.SUBNET_IDS }}],securityGroups=[${{ env.SECURITY_GROUP_IDS }}]}" \
103+
--task-definition ${{ env.ECS_DATA_IMPORT_TASK }}

.github/workflows/icdgenie-deploy.yml

Lines changed: 6 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,10 @@ on:
1111
- qa
1212
- stage
1313
- prod
14-
import_data:
15-
description: 'Execute data import'
16-
type: boolean
17-
default: false
1814

1915
jobs:
2016
deploy:
17+
timeout-minutes: 60
2118
runs-on: ubuntu-latest
2219
environment: ${{ inputs.tier }}
2320
env:
@@ -29,8 +26,6 @@ jobs:
2926
FRONTEND_APP_PATH: /
3027
ECS_CPU_UNITS: 1 vCPU
3128
ECS_MEMORY_UNITS: 2 GB
32-
ECS_DATA_IMPORT_CPU_UNITS: 2 vCPU
33-
ECS_DATA_IMPORT_MEMORY_UNITS: 4 GB
3429
permissions:
3530
id-token: write
3631
contents: read
@@ -42,7 +37,7 @@ jobs:
4237
- name: Configure AWS credentials
4338
uses: aws-actions/configure-aws-credentials@v5.1.0
4439
with:
45-
role-to-assume: arn:aws:iam::${{ env.AWS_ACCOUNT_ID }}:role/github-actions-cicd
40+
role-to-assume: arn:aws:iam::${{ env.AWS_ACCOUNT_ID }}:role/power-user-github-actions-cicd
4641
aws-region: ${{ env.AWS_REGION }}
4742

4843
- name: Setup environment variables
@@ -69,10 +64,8 @@ jobs:
6964
run: |
7065
echo "FRONTEND_IMAGE=${{ env.IMAGE_REPOSITORY }}:${{ env.IMAGE_TIER }}-frontend-${{ env.APP_GIT_TAG }}-${{ env.DATETIME }}" >> $GITHUB_ENV
7166
echo "BACKEND_IMAGE=${{ env.IMAGE_REPOSITORY }}:${{ env.IMAGE_TIER }}-backend-${{ env.APP_GIT_TAG }}-${{ env.DATETIME }}" >> $GITHUB_ENV
72-
echo "DATA_IMPORT_IMAGE=${{ env.IMAGE_REPOSITORY }}:${{ env.IMAGE_TIER }}-data-import-${{ env.APP_GIT_TAG }}-${{ env.DATETIME }}" >> $GITHUB_ENV
7367
echo "FRONTEND_IMAGE_LATEST=${{ env.IMAGE_REPOSITORY }}:${{ env.IMAGE_TIER }}-frontend-latest" >> $GITHUB_ENV
7468
echo "BACKEND_IMAGE_LATEST=${{ env.IMAGE_REPOSITORY }}:${{ env.IMAGE_TIER }}-backend-latest" >> $GITHUB_ENV
75-
echo "DATA_IMPORT_IMAGE_LATEST=${{ env.IMAGE_REPOSITORY }}:${{ env.IMAGE_TIER }}-data-import-latest" >> $GITHUB_ENV
7669
7770
- name: Retrieve AWS SSM parameters
7871
run: |
@@ -101,20 +94,8 @@ jobs:
10194
tags: |
10295
${{ env.BACKEND_IMAGE }}
10396
${{ env.BACKEND_IMAGE_LATEST }}
104-
cache-from: type=registry,ref=${{ env.IMAGE_REPOSITORY }}:backend-cache
105-
cache-to: type=registry,ref=${{ env.IMAGE_REPOSITORY }}:backend-cache,mode=max
106-
107-
- name: Build and push data import image
108-
uses: docker/build-push-action@v5
109-
with:
110-
context: .
111-
file: docker/data-import.dockerfile
112-
push: true
113-
tags: |
114-
${{ env.DATA_IMPORT_IMAGE }}
115-
${{ env.DATA_IMPORT_IMAGE_LATEST }}
116-
cache-from: type=registry,ref=${{ env.IMAGE_REPOSITORY }}:data-import-cache
117-
cache-to: type=registry,ref=${{ env.IMAGE_REPOSITORY }}:data-import-cache,mode=max
97+
cache-from: type=registry,ref=${{ env.BACKEND_IMAGE_LATEST }}
98+
cache-to: type=inline
11899

119100
- name: Build and push frontend image
120101
uses: docker/build-push-action@v5
@@ -127,21 +108,17 @@ jobs:
127108
tags: |
128109
${{ env.FRONTEND_IMAGE }}
129110
${{ env.FRONTEND_IMAGE_LATEST }}
130-
cache-from: type=registry,ref=${{ env.IMAGE_REPOSITORY }}:frontend-cache
131-
cache-to: type=registry,ref=${{ env.IMAGE_REPOSITORY }}:frontend-cache,mode=max
111+
cache-from: type=registry,ref=${{ env.FRONTEND_IMAGE_LATEST }}
112+
cache-to: type=inline
132113

133114
- name: Prepare task definitions
134115
run: |
135116
mkdir -p ecs-tasks
136117
envsubst < .github/aws/web.yml > ecs-tasks/web.yml
137-
envsubst < .github/aws/data-import.yml > ecs-tasks/data-import.yml
138118
139119
- name: Register web task definition
140120
run: aws ecs register-task-definition --cli-input-yaml file://ecs-tasks/web.yml
141121

142-
- name: Register data import task definition
143-
run: aws ecs register-task-definition --cli-input-yaml file://ecs-tasks/data-import.yml
144-
145122
- name: Update ECS service
146123
run: |
147124
aws ecs update-service \
@@ -150,13 +127,3 @@ jobs:
150127
--task-definition ${{ env.ECS_WEB_TASK }} \
151128
--desired-count 1 \
152129
--force-new-deployment
153-
154-
- name: Run data import task
155-
if: inputs.import_data == true
156-
run: |
157-
aws ecs run-task \
158-
--cluster ${{ env.ECS_CLUSTER }} \
159-
--count 1 \
160-
--launch-type FARGATE \
161-
--network-configuration "awsvpcConfiguration={subnets=[${{ env.SUBNET_IDS }}],securityGroups=[${{ env.SECURITY_GROUP_IDS }}]}" \
162-
--task-definition ${{ env.ECS_DATA_IMPORT_TASK }}

client/src/modules/about/getting-started.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ export default function Starter() {
364364
title="formatting"
365365
width="80%"
366366
height="400vw"
367-
src="https://nci.rev.vbrick.com/embed?id=5008d4e6-38c4-431f-96f7-e999f284f3b4"
367+
src="https://cbiit.github.io/nci-webtools-dceg-icdgenie/22-1202-Checking_ICD_O_3_ICD_10_Codes.mp4"
368368
allowFullScreen
369369
></iframe>
370370
<h3 style={{ fontWeight: "bold" }}>Using the Tool</h3>
@@ -375,7 +375,7 @@ export default function Starter() {
375375
title="batch"
376376
width="80%"
377377
height="400vw"
378-
src="https://nci.rev.vbrick.com/embed?id=6f9e1353-f6bf-4725-bd4e-2b03509e18a5"
378+
src="https://cbiit.github.io/nci-webtools-dceg-icdgenie/22-1201-How_to_Use_ICDgenie_s_Batch_Query_Tool.mp4"
379379
allowFullScreen
380380
></iframe>
381381
</Container>

0 commit comments

Comments
 (0)