From 092cff0a7baf1627c9774b98ca10974383751736 Mon Sep 17 00:00:00 2001 From: Milan Ogrizovic Date: Thu, 17 Oct 2024 15:20:04 +0200 Subject: [PATCH 01/14] fix docker image --- Dockerfile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 57ae0e8..f057cb8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Base image -FROM node:20-alpine as builder +FROM node:20-alpine AS builder # Set the working directory WORKDIR /app @@ -7,12 +7,12 @@ WORKDIR /app # Copy the package.json and package-lock.json files COPY package*.json . -# Install the dependencies -RUN npm install - # Copy the app files COPY . . +# Install the dependencies +RUN npm install + # Build the app RUN npm run build @@ -20,5 +20,5 @@ RUN npm run build FROM nginx:1.19.0 WORKDIR /usr/share/nginx/html RUN rm -rf ./* -COPY --from=builder /app/build . -ENTRYPOINT ["nginx", "-g", "daemon off;"] \ No newline at end of file +COPY --from=builder /app/dist . +ENTRYPOINT ["nginx", "-g", "daemon off;"] From 9b123056a997a35965a34b462c4faab1ca77f9d5 Mon Sep 17 00:00:00 2001 From: Milan Ogrizovic Date: Fri, 18 Oct 2024 09:26:02 +0200 Subject: [PATCH 02/14] rename task definition file --- .../{ecs-task-definition.yaml => ecs-task-definition.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename deployment-config/{ecs-task-definition.yaml => ecs-task-definition.json} (100%) diff --git a/deployment-config/ecs-task-definition.yaml b/deployment-config/ecs-task-definition.json similarity index 100% rename from deployment-config/ecs-task-definition.yaml rename to deployment-config/ecs-task-definition.json From e393351fe88ff29c4d2e5f42ea7967550dd011e7 Mon Sep 17 00:00:00 2001 From: Milan Ogrizovic Date: Fri, 18 Oct 2024 10:01:48 +0200 Subject: [PATCH 03/14] fix cicd script --- .github/workflows/cicd.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cicd.yaml b/.github/workflows/cicd.yaml index 0265d64..15486fe 100644 --- a/.github/workflows/cicd.yaml +++ b/.github/workflows/cicd.yaml @@ -73,7 +73,7 @@ jobs: SHA="${{ needs.build.outputs.commit_sha }}" export TASK_DEFINITION=$(cat deployment-config/ecs-task-definition.json) export UPDATED_TASK_DEFINITION=$(echo $TASK_DEFINITION | jq \ - --arg IMAGE "${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.APPLICATION_NAME }}:$SHA" + --arg IMAGE "${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.APPLICATION_NAME }}:$SHA") echo $UPDATED_TASK_DEFINITION > new-task-def.json aws ecs register-task-definition --cli-input-json file://new-task-def.json From 0350348923bea902eeb4e90b2f019104fa8ba8bb Mon Sep 17 00:00:00 2001 From: Milan Ogrizovic Date: Fri, 18 Oct 2024 10:15:26 +0200 Subject: [PATCH 04/14] fix task config file --- deployment-config/ecs-task-definition.json | 61 +++++----------------- 1 file changed, 13 insertions(+), 48 deletions(-) diff --git a/deployment-config/ecs-task-definition.json b/deployment-config/ecs-task-definition.json index e21f9f0..98bb53f 100644 --- a/deployment-config/ecs-task-definition.json +++ b/deployment-config/ecs-task-definition.json @@ -1,5 +1,5 @@ { - "taskDefinitionArn": "arn:aws:ecs:eu-west-1:654654270781:task-definition/rbc-library-fe:1", + "family": "rbc-library-fe", "containerDefinitions": [ { "name": "rbc-lib-fe", @@ -39,65 +39,30 @@ "systemControls": [] } ], - "family": "rbc-library-fe", - "taskRoleArn": "arn:aws:iam::654654270781:role/rbc-library-fe-20241016144507599100000001", - "executionRoleArn": "arn:aws:iam::654654270781:role/rbc-library-fe-20241016144507640300000004", - "networkMode": "awsvpc", - "revision": 1, - "volumes": [], - "status": "ACTIVE", - "requiresAttributes": [ - { - "name": "com.amazonaws.ecs.capability.logging-driver.awslogs" - }, - { - "name": "ecs.capability.execution-role-awslogs" - }, - { - "name": "com.amazonaws.ecs.capability.docker-remote-api.1.19" - }, - { - "name": "com.amazonaws.ecs.capability.docker-remote-api.1.17" - }, - { - "name": "com.amazonaws.ecs.capability.task-iam-role" - }, + "tags": [ { - "name": "ecs.capability.container-ordering" + "key": "Owner", + "value": "rbc" }, { - "name": "com.amazonaws.ecs.capability.docker-remote-api.1.18" + "key": "GithubRepo", + "value": "rbc3-infra-aws" }, { - "name": "ecs.capability.task-eni" + "key": "GithubOrg", + "value": "ProductDock" } ], + "taskRoleArn": "arn:aws:iam::654654270781:role/rbc-library-fe-20241016144507599100000001", + "executionRoleArn": "arn:aws:iam::654654270781:role/rbc-library-fe-20241016144507640300000004", + "networkMode": "awsvpc", + "volumes": [], "placementConstraints": [], - "compatibilities": [ - "EC2", - "FARGATE" - ], "requiresCompatibilities": [ "EC2" ], "runtimePlatform": { "cpuArchitecture": "X86_64", "operatingSystemFamily": "LINUX" - }, - "registeredAt": "2024-10-16T14:45:09.292Z", - "registeredBy": "arn:aws:sts::654654270781:assumed-role/terraform/GitHubActions", - "tags": [ - { - "key": "Owner", - "value": "rbc" - }, - { - "key": "GithubRepo", - "value": "rbc3-infra-aws" - }, - { - "key": "GithubOrg", - "value": "ProductDock" - } - ] + } } From ec93056c23917a812cca569255dfdf223366bf78 Mon Sep 17 00:00:00 2001 From: Milan Ogrizovic Date: Fri, 18 Oct 2024 10:26:34 +0200 Subject: [PATCH 05/14] update app ports --- deployment-config/ecs-task-definition.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deployment-config/ecs-task-definition.json b/deployment-config/ecs-task-definition.json index 98bb53f..dac3bd3 100644 --- a/deployment-config/ecs-task-definition.json +++ b/deployment-config/ecs-task-definition.json @@ -9,8 +9,8 @@ "portMappings": [ { "name": "rbc-lib-fe", - "containerPort": 81, - "hostPort": 81, + "containerPort":4000 , + "hostPort": 80, "protocol": "tcp" } ], From a33119352264553be68cc99348f11dc8d51037f9 Mon Sep 17 00:00:00 2001 From: Milan Ogrizovic Date: Fri, 18 Oct 2024 10:28:52 +0200 Subject: [PATCH 06/14] update app ports --- deployment-config/ecs-task-definition.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment-config/ecs-task-definition.json b/deployment-config/ecs-task-definition.json index dac3bd3..c40d1f0 100644 --- a/deployment-config/ecs-task-definition.json +++ b/deployment-config/ecs-task-definition.json @@ -10,7 +10,7 @@ { "name": "rbc-lib-fe", "containerPort":4000 , - "hostPort": 80, + "hostPort": 4000, "protocol": "tcp" } ], From 0c37a1a1236283a4b207edaceb69f1fdb0b5b505 Mon Sep 17 00:00:00 2001 From: Milan Ogrizovic Date: Fri, 18 Oct 2024 13:41:01 +0200 Subject: [PATCH 07/14] update app ports --- deployment-config/ecs-task-definition.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment-config/ecs-task-definition.json b/deployment-config/ecs-task-definition.json index c40d1f0..816044d 100644 --- a/deployment-config/ecs-task-definition.json +++ b/deployment-config/ecs-task-definition.json @@ -9,7 +9,7 @@ "portMappings": [ { "name": "rbc-lib-fe", - "containerPort":4000 , + "containerPort": 4000, "hostPort": 4000, "protocol": "tcp" } From 502ec174e35fa00903a6cbde2145fbef4495ba7b Mon Sep 17 00:00:00 2001 From: Milan Ogrizovic Date: Fri, 18 Oct 2024 13:49:08 +0200 Subject: [PATCH 08/14] update app ports --- deployment-config/ecs-task-definition.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deployment-config/ecs-task-definition.json b/deployment-config/ecs-task-definition.json index 816044d..c21c3e4 100644 --- a/deployment-config/ecs-task-definition.json +++ b/deployment-config/ecs-task-definition.json @@ -9,8 +9,8 @@ "portMappings": [ { "name": "rbc-lib-fe", - "containerPort": 4000, - "hostPort": 4000, + "containerPort": 80, + "hostPort": 80, "protocol": "tcp" } ], From 63a6cb04cf1313ce56bbed762b13a94ed820f58d Mon Sep 17 00:00:00 2001 From: Milan Ogrizovic Date: Fri, 18 Oct 2024 14:41:54 +0200 Subject: [PATCH 09/14] debug config file --- .github/workflows/cicd.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/cicd.yaml b/.github/workflows/cicd.yaml index 15486fe..c73c7f8 100644 --- a/.github/workflows/cicd.yaml +++ b/.github/workflows/cicd.yaml @@ -74,6 +74,9 @@ jobs: export TASK_DEFINITION=$(cat deployment-config/ecs-task-definition.json) export UPDATED_TASK_DEFINITION=$(echo $TASK_DEFINITION | jq \ --arg IMAGE "${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.APPLICATION_NAME }}:$SHA") + echo "debug ===============================" + cat $UPDATED_TASK_DEFINITION + echo "end debug ===========================" echo $UPDATED_TASK_DEFINITION > new-task-def.json aws ecs register-task-definition --cli-input-json file://new-task-def.json From 3a751f97825a1a93d75bf9126a6ac057eed1112c Mon Sep 17 00:00:00 2001 From: Milan Ogrizovic Date: Fri, 18 Oct 2024 14:49:26 +0200 Subject: [PATCH 10/14] debug config file --- .github/workflows/cicd.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cicd.yaml b/.github/workflows/cicd.yaml index c73c7f8..b2a9f3e 100644 --- a/.github/workflows/cicd.yaml +++ b/.github/workflows/cicd.yaml @@ -75,7 +75,7 @@ jobs: export UPDATED_TASK_DEFINITION=$(echo $TASK_DEFINITION | jq \ --arg IMAGE "${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.APPLICATION_NAME }}:$SHA") echo "debug ===============================" - cat $UPDATED_TASK_DEFINITION + cat "$UPDATED_TASK_DEFINITION" echo "end debug ===========================" echo $UPDATED_TASK_DEFINITION > new-task-def.json aws ecs register-task-definition --cli-input-json file://new-task-def.json From 68fd06829632a9afa9dbd9f57d886dc39e93cb39 Mon Sep 17 00:00:00 2001 From: Milan Ogrizovic Date: Fri, 18 Oct 2024 15:11:58 +0200 Subject: [PATCH 11/14] dumbass --- .github/workflows/cicd.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/cicd.yaml b/.github/workflows/cicd.yaml index b2a9f3e..7ef9a78 100644 --- a/.github/workflows/cicd.yaml +++ b/.github/workflows/cicd.yaml @@ -73,10 +73,8 @@ jobs: SHA="${{ needs.build.outputs.commit_sha }}" export TASK_DEFINITION=$(cat deployment-config/ecs-task-definition.json) export UPDATED_TASK_DEFINITION=$(echo $TASK_DEFINITION | jq \ - --arg IMAGE "${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.APPLICATION_NAME }}:$SHA") - echo "debug ===============================" - cat "$UPDATED_TASK_DEFINITION" - echo "end debug ===========================" + --arg IMAGE "${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.APPLICATION_NAME }}:$SHA" \ + '.containerDefinitions[0].image = $IMAGE') echo $UPDATED_TASK_DEFINITION > new-task-def.json aws ecs register-task-definition --cli-input-json file://new-task-def.json From 2ee2d6d332af64d01831153c9cad6cc728b917fa Mon Sep 17 00:00:00 2001 From: Milan Ogrizovic Date: Fri, 18 Oct 2024 15:57:33 +0200 Subject: [PATCH 12/14] update readme --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 1caee63..7595321 100644 --- a/README.md +++ b/README.md @@ -48,3 +48,10 @@ To run the application locally, follow these steps: By default, the application will run on [http://localhost:3000](http://localhost:3000). + +### CICD +Merge to master will trigger CICD pipeline that has following stages: +- Build App and the Docker image +- Push Docker image to the registry +- Update deployment configuration file to contain newly built image tag +- Deploy new deployment configuration From 75b256297bad6061fad670aab62bde481b52221e Mon Sep 17 00:00:00 2001 From: Milan Ogrizovic Date: Fri, 18 Oct 2024 16:18:08 +0200 Subject: [PATCH 13/14] update actions versions --- .github/workflows/cicd.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cicd.yaml b/.github/workflows/cicd.yaml index 7ef9a78..a796fe0 100644 --- a/.github/workflows/cicd.yaml +++ b/.github/workflows/cicd.yaml @@ -22,10 +22,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Configure aws credentials - uses: aws-actions/configure-aws-credentials@v2 + uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::654654270781:role/github-actions aws-region: ${{ env.AWS_REGION }} From 64327b5e9708cb018103e96ac0767d6383f0398f Mon Sep 17 00:00:00 2001 From: Milan Ogrizovic Date: Fri, 18 Oct 2024 16:20:27 +0200 Subject: [PATCH 14/14] update actions versions --- .github/workflows/cicd.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cicd.yaml b/.github/workflows/cicd.yaml index a796fe0..c0b02e3 100644 --- a/.github/workflows/cicd.yaml +++ b/.github/workflows/cicd.yaml @@ -59,10 +59,10 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v2 + uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::654654270781:role/github-actions aws-region: ${{ env.AWS_REGION }}