From f1b5a1c3a896a58635ef8f6d76cecbea87285e99 Mon Sep 17 00:00:00 2001 From: abs2023 Date: Tue, 6 Jan 2026 14:47:27 -0500 Subject: [PATCH] update build to include ECS task update and refresh --- .github/workflows/build.yml | 53 +++++++++++++++++++++++++++++++------ 1 file changed, 45 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b940116..877c371 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -64,6 +64,7 @@ jobs: is_cicd_branch: ${{ steps.determine_env.outputs.is_cicd_branch }} ecs_cluster: ${{ steps.determine_env.outputs.ecs_cluster }} ecs_service: ${{ steps.determine_env.outputs.ecs_service }} + task_family: ${{ steps.determine_env.outputs.task_family }} aws_region: ${{ steps.determine_env.outputs.aws_region }} steps: - name: Clone repository @@ -107,6 +108,9 @@ jobs: echo "should_deploy=true" >> $GITHUB_OUTPUT fi + # Task family is the same across all environments (per Terraform config) + echo "task_family=tsk-lumerin-indexer" >> $GITHUB_OUTPUT + # Set ECS cluster and service names based on environment case $ENV in dev) @@ -310,18 +314,51 @@ jobs: aws-region: ${{ needs.generate-tag.outputs.aws_region }} role-session-name: GitHubActions-SpotIndexer-${{ github.run_id }} - - name: Update ECS service + - name: Update task definition and deploy run: | + CLUSTER="${{ needs.generate-tag.outputs.ecs_cluster }}" + SERVICE="${{ needs.generate-tag.outputs.ecs_service }}" + TASK_FAMILY="${{ needs.generate-tag.outputs.task_family }}" + IMAGE="${{ env.GHCR_IMAGE }}:${{ needs.generate-tag.outputs.tag_name }}" + REGION="${{ needs.generate-tag.outputs.aws_region }}" + echo "🚀 Deploying to ${{ needs.generate-tag.outputs.environment }} environment" - echo " Cluster: ${{ needs.generate-tag.outputs.ecs_cluster }}" - echo " Service: ${{ needs.generate-tag.outputs.ecs_service }}" - echo " Image: ${{ env.GHCR_IMAGE }}:${{ needs.generate-tag.outputs.tag_name }}" + echo " Cluster: ${CLUSTER}" + echo " Service: ${SERVICE}" + echo " Task Family: ${TASK_FAMILY}" + echo " Image: ${IMAGE}" + + # Get current task definition + echo "📥 Fetching current task definition..." + aws ecs describe-task-definition \ + --task-definition ${TASK_FAMILY} \ + --region ${REGION} \ + --query 'taskDefinition' > task-def.json + + # Update task definition with new image + echo "🔧 Updating container image in task definition..." + jq --arg IMAGE "${IMAGE}" \ + '.containerDefinitions[0].image = $IMAGE | + del(.taskDefinitionArn, .revision, .status, .requiresAttributes, .compatibilities, .registeredAt, .registeredBy)' \ + task-def.json > new-task-def.json + # Register new task definition + echo "📝 Registering new task definition revision..." + NEW_TASK_DEF=$(aws ecs register-task-definition \ + --cli-input-json file://new-task-def.json \ + --region ${REGION} \ + --query 'taskDefinition.taskDefinitionArn' --output text) + + echo "✅ Registered new task definition: ${NEW_TASK_DEF}" + + # Update ECS service with new task definition + echo "🚀 Updating ECS service..." aws ecs update-service \ - --cluster ${{ needs.generate-tag.outputs.ecs_cluster }} \ - --service ${{ needs.generate-tag.outputs.ecs_service }} \ - --force-new-deployment \ - --region ${{ needs.generate-tag.outputs.aws_region }} + --cluster ${CLUSTER} \ + --service ${SERVICE} \ + --task-definition ${NEW_TASK_DEF} \ + --region ${REGION} \ + --force-new-deployment echo "✅ Deployment triggered"