From 3835163ffb9028655e4bef2ee3e599638f7a8024 Mon Sep 17 00:00:00 2001 From: Ayush8923 <80516839+Ayush8923@users.noreply.github.com> Date: Mon, 20 Apr 2026 14:40:33 +0530 Subject: [PATCH 01/15] feat(*): backend staging deployment for ec2 --- .github/workflows/cd-staging-ec2.yml | 56 ++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 .github/workflows/cd-staging-ec2.yml diff --git a/.github/workflows/cd-staging-ec2.yml b/.github/workflows/cd-staging-ec2.yml new file mode 100644 index 000000000..59a942f1a --- /dev/null +++ b/.github/workflows/cd-staging-ec2.yml @@ -0,0 +1,56 @@ +name: Deploy Kaapi staging to EC2 + +on: + push: + branches: [feat/staging-deployment-ec2] + workflow_dispatch: + +concurrency: + group: staging-ec2-deploy + cancel-in-progress: false + +jobs: + deploy: + runs-on: ubuntu-latest + environment: AWS_STAGING_ENV_VARS + + permissions: + id-token: write + contents: read + + steps: + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v6 + with: + role-to-assume: ${{ vars.STAGING_EC2_DEPLOY_ROLE_ARN }} + aws-region: ap-south-1 + + - name: Trigger deploy on EC2 via SSM + id: ssm + env: + INSTANCE_ID: ${{ vars.STAGING_EC2_INSTANCE_ID }} + GIT_SHA: ${{ github.sha }} + run: | + CMD_ID=$(aws ssm send-command \ + --instance-ids "$INSTANCE_ID" \ + --document-name "AWS-RunShellScript" \ + --comment "Deploy kaapi-backend @ ${GIT_SHA::7}" \ + --parameters commands='["set -eux","sudo -iu ubuntu bash -lc \"cd /data/kaapi-backend && git fetch --all && git pull origin main && docker compose --profile prestart up prestart --build --abort-on-container-exit && docker compose up -d --build --remove-orphans && docker image prune -f\""]' \ + --cloud-watch-output-config CloudWatchOutputEnabled=true \ + --query "Command.CommandId" --output text) + echo "cmd_id=$CMD_ID" >> "$GITHUB_OUTPUT" + echo "Sent SSM command: $CMD_ID" + + - name: Wait for SSM command to finish + env: + INSTANCE_ID: ${{ vars.STAGING_EC2_INSTANCE_ID }} + CMD_ID: ${{ steps.ssm.outputs.cmd_id }} + run: | + aws ssm wait command-executed \ + --command-id "$CMD_ID" \ + --instance-id "$INSTANCE_ID" + aws ssm get-command-invocation \ + --command-id "$CMD_ID" \ + --instance-id "$INSTANCE_ID" \ + --query '{Status:Status,Stdout:StandardOutputContent,Stderr:StandardErrorContent}' \ + --output json From bdc1b1ce70ec7b996c9924527c7d9e0d335c56a1 Mon Sep 17 00:00:00 2001 From: Ayush8923 <80516839+Ayush8923@users.noreply.github.com> Date: Mon, 20 Apr 2026 15:42:22 +0530 Subject: [PATCH 02/15] fix(*): remove the github shagst --- .github/workflows/cd-staging-ec2.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cd-staging-ec2.yml b/.github/workflows/cd-staging-ec2.yml index 59a942f1a..42aced993 100644 --- a/.github/workflows/cd-staging-ec2.yml +++ b/.github/workflows/cd-staging-ec2.yml @@ -29,13 +29,12 @@ jobs: id: ssm env: INSTANCE_ID: ${{ vars.STAGING_EC2_INSTANCE_ID }} - GIT_SHA: ${{ github.sha }} run: | CMD_ID=$(aws ssm send-command \ --instance-ids "$INSTANCE_ID" \ --document-name "AWS-RunShellScript" \ - --comment "Deploy kaapi-backend @ ${GIT_SHA::7}" \ - --parameters commands='["set -eux","sudo -iu ubuntu bash -lc \"cd /data/kaapi-backend && git fetch --all && git pull origin main && docker compose --profile prestart up prestart --build --abort-on-container-exit && docker compose up -d --build --remove-orphans && docker image prune -f\""]' \ + --comment "Deploy kaapi-backend kaapi-staging" \ + --parameters commands='["set -eux","sudo -iu ubuntu bash -lc \"cd /data/kaapi-backend && git fetch --all && git pull origin main && docker compose build && docker compose run --rm backend uv run alembic upgrade head && docker compose up -d --remove-orphans && docker image prune -f\""]' \ --cloud-watch-output-config CloudWatchOutputEnabled=true \ --query "Command.CommandId" --output text) echo "cmd_id=$CMD_ID" >> "$GITHUB_OUTPUT" From d302669dd3257c3cac1d4e6df65a055f1f509557 Mon Sep 17 00:00:00 2001 From: Ayush8923 <80516839+Ayush8923@users.noreply.github.com> Date: Tue, 21 Apr 2026 08:49:37 +0530 Subject: [PATCH 03/15] fix(*): change the vars to secrets and upate the file name --- .github/workflows/cd-staging-ec2.yml | 6 +++--- .github/workflows/{cd-staging.yml => cd-staging-ecs.yml} | 0 2 files changed, 3 insertions(+), 3 deletions(-) rename .github/workflows/{cd-staging.yml => cd-staging-ecs.yml} (100%) diff --git a/.github/workflows/cd-staging-ec2.yml b/.github/workflows/cd-staging-ec2.yml index 42aced993..a145dddbd 100644 --- a/.github/workflows/cd-staging-ec2.yml +++ b/.github/workflows/cd-staging-ec2.yml @@ -22,13 +22,13 @@ jobs: - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v6 with: - role-to-assume: ${{ vars.STAGING_EC2_DEPLOY_ROLE_ARN }} + role-to-assume: ${{ secrets.STAGING_EC2_DEPLOY_ROLE_ARN }} aws-region: ap-south-1 - name: Trigger deploy on EC2 via SSM id: ssm env: - INSTANCE_ID: ${{ vars.STAGING_EC2_INSTANCE_ID }} + INSTANCE_ID: ${{ secrets.STAGING_EC2_INSTANCE_ID }} run: | CMD_ID=$(aws ssm send-command \ --instance-ids "$INSTANCE_ID" \ @@ -42,7 +42,7 @@ jobs: - name: Wait for SSM command to finish env: - INSTANCE_ID: ${{ vars.STAGING_EC2_INSTANCE_ID }} + INSTANCE_ID: ${{ secrets.STAGING_EC2_INSTANCE_ID }} CMD_ID: ${{ steps.ssm.outputs.cmd_id }} run: | aws ssm wait command-executed \ diff --git a/.github/workflows/cd-staging.yml b/.github/workflows/cd-staging-ecs.yml similarity index 100% rename from .github/workflows/cd-staging.yml rename to .github/workflows/cd-staging-ecs.yml From 585ee53f37152e38d64de1314cfdea928f277825 Mon Sep 17 00:00:00 2001 From: Ayush8923 <80516839+Ayush8923@users.noreply.github.com> Date: Mon, 27 Apr 2026 14:12:44 +0530 Subject: [PATCH 04/15] fix(*): added the migration in CD --- .github/workflows/cd-production.yml | 33 +++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/.github/workflows/cd-production.yml b/.github/workflows/cd-production.yml index c6febe073..38b1e73f8 100644 --- a/.github/workflows/cd-production.yml +++ b/.github/workflows/cd-production.yml @@ -39,6 +39,39 @@ jobs: docker build -t $REGISTRY/$REPOSITORY:latest ./backend docker push $REGISTRY/$REPOSITORY:latest + - name: Run database migrations + env: + CLUSTER: ${{ vars.AWS_RESOURCE_PREFIX }}-staging-cluster + SERVICE: ${{ vars.AWS_RESOURCE_PREFIX }}-staging-service + TASK_DEF: ${{ vars.AWS_RESOURCE_PREFIX }}-staging-task + run: | + CONTAINER_NAME=$(aws ecs describe-task-definition --task-definition $TASK_DEF --query 'taskDefinition.containerDefinitions[0].name' --output text) + + NETWORK_CONFIG=$(aws ecs describe-services --cluster $CLUSTER --services $SERVICE \ + --query 'services[0].networkConfiguration' --output json | jq -c '.') + + TASK_ARN=$(aws ecs run-task \ + --cluster $CLUSTER \ + --launch-type FARGATE \ + --task-definition $TASK_DEF \ + --count 1 \ + --network-configuration "$NETWORK_CONFIG" \ + --overrides "{\"containerOverrides\":[{\"name\":\"$CONTAINER_NAME\",\"command\":[\"uv\",\"run\",\"alembic\",\"upgrade\",\"head\"]}]}" \ + --network-configuration "awsvpcConfiguration={subnets=[${{ secrets.SUBNET_IDS }}],securityGroups=[${{ secrets.SECURITY_GROUP_IDS }}],assignPublicIp=ENABLED}" \ + --query 'tasks[0].taskArn' --output text) + + echo "Migration task started: $TASK_ARN" + aws ecs wait tasks-stopped --cluster $CLUSTER --tasks "$TASK_ARN" + + EXIT_CODE=$(aws ecs describe-tasks --cluster $CLUSTER --tasks "$TASK_ARN" \ + --query "tasks[0].containers[?name=='$CONTAINER_NAME'].exitCode | [0]" --output text) + + if [ "$EXIT_CODE" != "0" ]; then + echo "Migration failed with exit code $EXIT_CODE" + exit 1 + fi + echo "Migration completed successfully" + - name: Deploy to ECS run: | aws ecs update-service \ From 4a0f74d2b510c5743e34c53432dcf65095402bee Mon Sep 17 00:00:00 2001 From: Ayush8923 <80516839+Ayush8923@users.noreply.github.com> Date: Mon, 27 Apr 2026 14:32:58 +0530 Subject: [PATCH 05/15] fix(*): update the naming convention of enviornment --- .github/workflows/cd-staging-ec2.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd-staging-ec2.yml b/.github/workflows/cd-staging-ec2.yml index a145dddbd..a25e03abf 100644 --- a/.github/workflows/cd-staging-ec2.yml +++ b/.github/workflows/cd-staging-ec2.yml @@ -12,7 +12,7 @@ concurrency: jobs: deploy: runs-on: ubuntu-latest - environment: AWS_STAGING_ENV_VARS + environment: AWS_STAGING_ENV permissions: id-token: write From f5fb11900ecbb5240ad66b059bc1bb0d3f9858c0 Mon Sep 17 00:00:00 2001 From: Ayush8923 <80516839+Ayush8923@users.noreply.github.com> Date: Mon, 27 Apr 2026 14:43:05 +0530 Subject: [PATCH 06/15] fix(*): created docker compose and update deployment guide --- .github/workflows/cd-staging-ec2.yml | 2 +- docker-compose.staging.yml | 58 ++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 docker-compose.staging.yml diff --git a/.github/workflows/cd-staging-ec2.yml b/.github/workflows/cd-staging-ec2.yml index a25e03abf..16089b805 100644 --- a/.github/workflows/cd-staging-ec2.yml +++ b/.github/workflows/cd-staging-ec2.yml @@ -34,7 +34,7 @@ jobs: --instance-ids "$INSTANCE_ID" \ --document-name "AWS-RunShellScript" \ --comment "Deploy kaapi-backend kaapi-staging" \ - --parameters commands='["set -eux","sudo -iu ubuntu bash -lc \"cd /data/kaapi-backend && git fetch --all && git pull origin main && docker compose build && docker compose run --rm backend uv run alembic upgrade head && docker compose up -d --remove-orphans && docker image prune -f\""]' \ + --parameters commands='["set -eux","sudo -iu ubuntu bash -lc \"cd /data/kaapi-backend && git fetch --all && git pull origin main && docker compose -f docker-compose.staging.yml build && docker compose -f docker-compose.staging.yml run --rm backend uv run alembic upgrade head && docker compose -f docker-compose.staging.yml up -d --remove-orphans && docker image prune -f\""]' \ --cloud-watch-output-config CloudWatchOutputEnabled=true \ --query "Command.CommandId" --output text) echo "cmd_id=$CMD_ID" >> "$GITHUB_OUTPUT" diff --git a/docker-compose.staging.yml b/docker-compose.staging.yml new file mode 100644 index 000000000..4d8d01650 --- /dev/null +++ b/docker-compose.staging.yml @@ -0,0 +1,58 @@ +version: "3.9" + +services: + backend: + image: "${DOCKER_IMAGE_BACKEND?Variable not set}:${TAG:-latest}" + container_name: backend + restart: always + build: + context: ./backend + env_file: + - .env + ports: + - "8000:80" + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:80/api/v1/utils/health/"] + interval: 10s + timeout: 5s + retries: 5 + command: > + uv run uvicorn app.main:app --host 0.0.0.0 --port 80 --reload + develop: + watch: + # Sync backend source code into container immediately on change + - action: sync + path: ./backend/app + target: /app/app + # Rebuild image if dependencies change + - action: rebuild + path: ./backend/pyproject.toml + - action: rebuild + path: ./backend/uv.lock + logging: + driver: awslogs + options: + awslogs-region: ap-south-1 + awslogs-group: /ec2/kaapi-staging + awslogs-stream: backend + awslogs-create-group: "true" + + celery_worker: + image: "${DOCKER_IMAGE_BACKEND?Variable not set}:${TAG:-latest}" + container_name: celery-worker + restart: always + build: + context: ./backend + depends_on: + backend: + condition: service_healthy + env_file: + - .env + command: ["uv", "run", "celery", "-A", "app.celery.celery_app", "worker", "--loglevel=info"] + logging: + driver: awslogs + options: + awslogs-region: ap-south-1 + awslogs-group: /ec2/kaapi-staging + awslogs-stream: celery-worker + awslogs-create-group: "true" From 38a18e9160194117f3a4ef4d5d4b5748af9b93d0 Mon Sep 17 00:00:00 2001 From: Ayush8923 <80516839+Ayush8923@users.noreply.github.com> Date: Mon, 27 Apr 2026 15:17:36 +0530 Subject: [PATCH 07/15] fix(*): update the script as per coderabbit suggestion --- .github/workflows/cd-production.yml | 16 +++++++++++----- .github/workflows/cd-staging-ec2.yml | 8 ++++++-- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/.github/workflows/cd-production.yml b/.github/workflows/cd-production.yml index 38b1e73f8..838902cba 100644 --- a/.github/workflows/cd-production.yml +++ b/.github/workflows/cd-production.yml @@ -36,14 +36,18 @@ jobs: REPOSITORY: ${{ vars.AWS_RESOURCE_PREFIX }}-repo TAG: ${{ github.ref_name }} run: | - docker build -t $REGISTRY/$REPOSITORY:latest ./backend + docker build \ + -t $REGISTRY/$REPOSITORY:latest \ + -t $REGISTRY/$REPOSITORY:$TAG \ + ./backend docker push $REGISTRY/$REPOSITORY:latest + docker push $REGISTRY/$REPOSITORY:$TAG - name: Run database migrations env: - CLUSTER: ${{ vars.AWS_RESOURCE_PREFIX }}-staging-cluster - SERVICE: ${{ vars.AWS_RESOURCE_PREFIX }}-staging-service - TASK_DEF: ${{ vars.AWS_RESOURCE_PREFIX }}-staging-task + CLUSTER: ${{ vars.AWS_RESOURCE_PREFIX }}-cluster + SERVICE: ${{ vars.AWS_RESOURCE_PREFIX }}-service + TASK_DEF: ${{ vars.AWS_RESOURCE_PREFIX }}-task run: | CONTAINER_NAME=$(aws ecs describe-task-definition --task-definition $TASK_DEF --query 'taskDefinition.containerDefinitions[0].name' --output text) @@ -57,7 +61,6 @@ jobs: --count 1 \ --network-configuration "$NETWORK_CONFIG" \ --overrides "{\"containerOverrides\":[{\"name\":\"$CONTAINER_NAME\",\"command\":[\"uv\",\"run\",\"alembic\",\"upgrade\",\"head\"]}]}" \ - --network-configuration "awsvpcConfiguration={subnets=[${{ secrets.SUBNET_IDS }}],securityGroups=[${{ secrets.SECURITY_GROUP_IDS }}],assignPublicIp=ENABLED}" \ --query 'tasks[0].taskArn' --output text) echo "Migration task started: $TASK_ARN" @@ -68,6 +71,9 @@ jobs: if [ "$EXIT_CODE" != "0" ]; then echo "Migration failed with exit code $EXIT_CODE" + aws ecs describe-tasks --cluster $CLUSTER --tasks "$TASK_ARN" \ + --query "tasks[0].{stopCode:stopCode,stoppedReason:stoppedReason,containerReason:containers[?name=='$CONTAINER_NAME'].reason | [0]}" \ + --output json exit 1 fi echo "Migration completed successfully" diff --git a/.github/workflows/cd-staging-ec2.yml b/.github/workflows/cd-staging-ec2.yml index 16089b805..b29938d64 100644 --- a/.github/workflows/cd-staging-ec2.yml +++ b/.github/workflows/cd-staging-ec2.yml @@ -2,7 +2,7 @@ name: Deploy Kaapi staging to EC2 on: push: - branches: [feat/staging-deployment-ec2] + branches: [main] workflow_dispatch: concurrency: @@ -45,11 +45,15 @@ jobs: INSTANCE_ID: ${{ secrets.STAGING_EC2_INSTANCE_ID }} CMD_ID: ${{ steps.ssm.outputs.cmd_id }} run: | + WAIT_EXIT=0 aws ssm wait command-executed \ --command-id "$CMD_ID" \ - --instance-id "$INSTANCE_ID" + --instance-id "$INSTANCE_ID" || WAIT_EXIT=$? + aws ssm get-command-invocation \ --command-id "$CMD_ID" \ --instance-id "$INSTANCE_ID" \ --query '{Status:Status,Stdout:StandardOutputContent,Stderr:StandardErrorContent}' \ --output json + + exit $WAIT_EXIT From d3956c6450176a65b7c7eb69427fc8c41dac0189 Mon Sep 17 00:00:00 2001 From: Ayush8923 <80516839+Ayush8923@users.noreply.github.com> Date: Tue, 28 Apr 2026 10:16:58 +0530 Subject: [PATCH 08/15] fix(*): update the command --- .github/workflows/cd-staging-ec2.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd-staging-ec2.yml b/.github/workflows/cd-staging-ec2.yml index b29938d64..c20c0b44c 100644 --- a/.github/workflows/cd-staging-ec2.yml +++ b/.github/workflows/cd-staging-ec2.yml @@ -34,7 +34,7 @@ jobs: --instance-ids "$INSTANCE_ID" \ --document-name "AWS-RunShellScript" \ --comment "Deploy kaapi-backend kaapi-staging" \ - --parameters commands='["set -eux","sudo -iu ubuntu bash -lc \"cd /data/kaapi-backend && git fetch --all && git pull origin main && docker compose -f docker-compose.staging.yml build && docker compose -f docker-compose.staging.yml run --rm backend uv run alembic upgrade head && docker compose -f docker-compose.staging.yml up -d --remove-orphans && docker image prune -f\""]' \ + --parameters commands='["set -eux","sudo -iu ubuntu bash -lc \"cd /data/kaapi-backend && git fetch --all && git pull origin main && docker compose -f docker-compose.staging.yml build && docker compose -f docker-compose.staging.yml run --rm backend alembic upgrade head && docker compose -f docker-compose.staging.yml up -d --remove-orphans && docker image prune -f\""]' \ --cloud-watch-output-config CloudWatchOutputEnabled=true \ --query "Command.CommandId" --output text) echo "cmd_id=$CMD_ID" >> "$GITHUB_OUTPUT" From e84e1539a4c7f3e138632680ce063e6705d25f6c Mon Sep 17 00:00:00 2001 From: Ayush8923 <80516839+Ayush8923@users.noreply.github.com> Date: Tue, 28 Apr 2026 10:17:59 +0530 Subject: [PATCH 09/15] fix(*): test workflow --- .github/workflows/cd-staging-ec2.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cd-staging-ec2.yml b/.github/workflows/cd-staging-ec2.yml index c20c0b44c..553a4f899 100644 --- a/.github/workflows/cd-staging-ec2.yml +++ b/.github/workflows/cd-staging-ec2.yml @@ -2,7 +2,7 @@ name: Deploy Kaapi staging to EC2 on: push: - branches: [main] + branches: [feat/staging-deployment-ec2] workflow_dispatch: concurrency: @@ -34,7 +34,7 @@ jobs: --instance-ids "$INSTANCE_ID" \ --document-name "AWS-RunShellScript" \ --comment "Deploy kaapi-backend kaapi-staging" \ - --parameters commands='["set -eux","sudo -iu ubuntu bash -lc \"cd /data/kaapi-backend && git fetch --all && git pull origin main && docker compose -f docker-compose.staging.yml build && docker compose -f docker-compose.staging.yml run --rm backend alembic upgrade head && docker compose -f docker-compose.staging.yml up -d --remove-orphans && docker image prune -f\""]' \ + --parameters commands='["set -eux","sudo -iu ubuntu bash -lc \"cd /data/kaapi-backend && git fetch --all && git pull origin feat/staging-deployment-ec2 && docker compose -f docker-compose.staging.yml build && docker compose -f docker-compose.staging.yml run --rm backend alembic upgrade head && docker compose -f docker-compose.staging.yml up -d --remove-orphans && docker image prune -f\""]' \ --cloud-watch-output-config CloudWatchOutputEnabled=true \ --query "Command.CommandId" --output text) echo "cmd_id=$CMD_ID" >> "$GITHUB_OUTPUT" From 385ac45a0ffdfaba3787c3dd4ab2c818acb8b740 Mon Sep 17 00:00:00 2001 From: Ayush8923 <80516839+Ayush8923@users.noreply.github.com> Date: Tue, 28 Apr 2026 10:35:29 +0530 Subject: [PATCH 10/15] fix(*): test workflow --- .github/workflows/cd-staging-ec2.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd-staging-ec2.yml b/.github/workflows/cd-staging-ec2.yml index 553a4f899..c7b41f185 100644 --- a/.github/workflows/cd-staging-ec2.yml +++ b/.github/workflows/cd-staging-ec2.yml @@ -34,7 +34,7 @@ jobs: --instance-ids "$INSTANCE_ID" \ --document-name "AWS-RunShellScript" \ --comment "Deploy kaapi-backend kaapi-staging" \ - --parameters commands='["set -eux","sudo -iu ubuntu bash -lc \"cd /data/kaapi-backend && git fetch --all && git pull origin feat/staging-deployment-ec2 && docker compose -f docker-compose.staging.yml build && docker compose -f docker-compose.staging.yml run --rm backend alembic upgrade head && docker compose -f docker-compose.staging.yml up -d --remove-orphans && docker image prune -f\""]' \ + --parameters commands='["set -eux","sudo -iu ubuntu bash -lc \"cd /data/kaapi-backend && git fetch --all && git pull origin feat/staging-deployment-ec2 && docker compose -f docker-compose.staging.yml build && docker compose -f docker-compose.staging.yml run --rm backend uv run alembic upgrade head && docker compose -f docker-compose.staging.yml up -d --remove-orphans && docker image prune -f\""]' \ --cloud-watch-output-config CloudWatchOutputEnabled=true \ --query "Command.CommandId" --output text) echo "cmd_id=$CMD_ID" >> "$GITHUB_OUTPUT" From af72d96b3758244160eb3dff2f1ddacf8dbdfd45 Mon Sep 17 00:00:00 2001 From: Ayush8923 <80516839+Ayush8923@users.noreply.github.com> Date: Tue, 28 Apr 2026 10:42:51 +0530 Subject: [PATCH 11/15] fix(*): test workflow --- .github/workflows/cd-staging-ec2.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd-staging-ec2.yml b/.github/workflows/cd-staging-ec2.yml index c7b41f185..1efdb7a3b 100644 --- a/.github/workflows/cd-staging-ec2.yml +++ b/.github/workflows/cd-staging-ec2.yml @@ -34,7 +34,7 @@ jobs: --instance-ids "$INSTANCE_ID" \ --document-name "AWS-RunShellScript" \ --comment "Deploy kaapi-backend kaapi-staging" \ - --parameters commands='["set -eux","sudo -iu ubuntu bash -lc \"cd /data/kaapi-backend && git fetch --all && git pull origin feat/staging-deployment-ec2 && docker compose -f docker-compose.staging.yml build && docker compose -f docker-compose.staging.yml run --rm backend uv run alembic upgrade head && docker compose -f docker-compose.staging.yml up -d --remove-orphans && docker image prune -f\""]' \ + --parameters commands='["set -eux","chown -R ubuntu:ubuntu /data/kaapi-backend","sudo -iu ubuntu bash -lc \"cd /data/kaapi-backend && git fetch --all && git pull origin feat/staging-deployment-ec2 && docker compose -f docker-compose.staging.yml build && docker compose -f docker-compose.staging.yml run --rm backend uv run alembic upgrade head && docker compose -f docker-compose.staging.yml up -d --remove-orphans && docker image prune -f\""]' \ --cloud-watch-output-config CloudWatchOutputEnabled=true \ --query "Command.CommandId" --output text) echo "cmd_id=$CMD_ID" >> "$GITHUB_OUTPUT" From 3ce13dff14f99affb9a0731890607eb44c55b24a Mon Sep 17 00:00:00 2001 From: Ayush8923 <80516839+Ayush8923@users.noreply.github.com> Date: Tue, 28 Apr 2026 10:50:20 +0530 Subject: [PATCH 12/15] fix(*): add the dedicated service of migration --- .github/workflows/cd-staging-ec2.yml | 2 +- docker-compose.staging.yml | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cd-staging-ec2.yml b/.github/workflows/cd-staging-ec2.yml index 1efdb7a3b..cc2302d10 100644 --- a/.github/workflows/cd-staging-ec2.yml +++ b/.github/workflows/cd-staging-ec2.yml @@ -34,7 +34,7 @@ jobs: --instance-ids "$INSTANCE_ID" \ --document-name "AWS-RunShellScript" \ --comment "Deploy kaapi-backend kaapi-staging" \ - --parameters commands='["set -eux","chown -R ubuntu:ubuntu /data/kaapi-backend","sudo -iu ubuntu bash -lc \"cd /data/kaapi-backend && git fetch --all && git pull origin feat/staging-deployment-ec2 && docker compose -f docker-compose.staging.yml build && docker compose -f docker-compose.staging.yml run --rm backend uv run alembic upgrade head && docker compose -f docker-compose.staging.yml up -d --remove-orphans && docker image prune -f\""]' \ + --parameters commands='["set -eux","chown -R ubuntu:ubuntu /data/kaapi-backend","sudo -iu ubuntu bash -lc \"cd /data/kaapi-backend && git fetch --all && git pull origin feat/staging-deployment-ec2 && docker compose -f docker-compose.staging.yml build && docker compose -f docker-compose.staging.yml --profile migrate run --rm migrate && docker compose -f docker-compose.staging.yml up -d --remove-orphans && docker image prune -f\""]' \ --cloud-watch-output-config CloudWatchOutputEnabled=true \ --query "Command.CommandId" --output text) echo "cmd_id=$CMD_ID" >> "$GITHUB_OUTPUT" diff --git a/docker-compose.staging.yml b/docker-compose.staging.yml index 4d8d01650..36b5fa8ee 100644 --- a/docker-compose.staging.yml +++ b/docker-compose.staging.yml @@ -37,6 +37,15 @@ services: awslogs-stream: backend awslogs-create-group: "true" + migrate: + image: "${DOCKER_IMAGE_BACKEND?Variable not set}:${TAG:-latest}" + build: + context: ./backend + env_file: + - .env + profiles: ["migrate"] + command: ["uv", "run", "alembic", "upgrade", "head"] + celery_worker: image: "${DOCKER_IMAGE_BACKEND?Variable not set}:${TAG:-latest}" container_name: celery-worker From f7dbacf3b6fc0662b0c4555146ed717f93bd14b8 Mon Sep 17 00:00:00 2001 From: Ayush8923 <80516839+Ayush8923@users.noreply.github.com> Date: Tue, 28 Apr 2026 11:21:38 +0530 Subject: [PATCH 13/15] fix(*): change the base branch --- .github/workflows/cd-staging-ec2.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd-staging-ec2.yml b/.github/workflows/cd-staging-ec2.yml index cc2302d10..b0e9a6891 100644 --- a/.github/workflows/cd-staging-ec2.yml +++ b/.github/workflows/cd-staging-ec2.yml @@ -34,7 +34,7 @@ jobs: --instance-ids "$INSTANCE_ID" \ --document-name "AWS-RunShellScript" \ --comment "Deploy kaapi-backend kaapi-staging" \ - --parameters commands='["set -eux","chown -R ubuntu:ubuntu /data/kaapi-backend","sudo -iu ubuntu bash -lc \"cd /data/kaapi-backend && git fetch --all && git pull origin feat/staging-deployment-ec2 && docker compose -f docker-compose.staging.yml build && docker compose -f docker-compose.staging.yml --profile migrate run --rm migrate && docker compose -f docker-compose.staging.yml up -d --remove-orphans && docker image prune -f\""]' \ + --parameters commands='["set -eux","chown -R ubuntu:ubuntu /data/kaapi-backend","sudo -iu ubuntu bash -lc \"cd /data/kaapi-backend && git fetch --all && git pull origin main && docker compose -f docker-compose.staging.yml build && docker compose -f docker-compose.staging.yml --profile migrate run --rm migrate && docker compose -f docker-compose.staging.yml up -d --remove-orphans && docker image prune -f\""]' \ --cloud-watch-output-config CloudWatchOutputEnabled=true \ --query "Command.CommandId" --output text) echo "cmd_id=$CMD_ID" >> "$GITHUB_OUTPUT" From c3ab2293a032c0c93a99f29daae2aab4305751c2 Mon Sep 17 00:00:00 2001 From: Ayush8923 <80516839+Ayush8923@users.noreply.github.com> Date: Tue, 28 Apr 2026 11:25:05 +0530 Subject: [PATCH 14/15] fix(*): update the push brnach name --- .github/workflows/cd-staging-ec2.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cd-staging-ec2.yml b/.github/workflows/cd-staging-ec2.yml index b0e9a6891..0cd318f71 100644 --- a/.github/workflows/cd-staging-ec2.yml +++ b/.github/workflows/cd-staging-ec2.yml @@ -2,7 +2,7 @@ name: Deploy Kaapi staging to EC2 on: push: - branches: [feat/staging-deployment-ec2] + branches: [main] workflow_dispatch: concurrency: From cf1d3a67a07cbc47eec0b66acedaca9310684e95 Mon Sep 17 00:00:00 2001 From: Ayush8923 <80516839+Ayush8923@users.noreply.github.com> Date: Tue, 28 Apr 2026 14:08:56 +0530 Subject: [PATCH 15/15] fix(*): update the postgres server --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index c05e3e17a..cdc60b5fe 100644 --- a/.env.example +++ b/.env.example @@ -25,7 +25,7 @@ API_BASE_URL=http://localhost:8000 CRON_INTERVAL_MINUTES=5 # Postgres -POSTGRES_SERVER=localhost +POSTGRES_SERVER=db POSTGRES_PORT=5432 POSTGRES_DB=kaapi POSTGRES_USER=postgres