name: Build, Push and Deploy CMS on: push: branches: [main] paths: - "cms/**" - ".gitea/workflows/cms-deploy.yml" env: AWS_REGION: us-east-1 ECR_REPOSITORY: cms jobs: build-push-deploy: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ env.AWS_REGION }} - name: Log in to Amazon ECR id: login-ecr uses: aws-actions/amazon-ecr-login@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build and push image uses: docker/build-push-action@v6 with: context: ./cms file: ./cms/Dockerfile push: true tags: | ${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:latest ${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:${{ gitea.sha }} # cluster/service ARNs come from `pulumi stack output ecsClusterArn` / # `cmsServiceArn` in the infrastructure project — set once as repo # variables (Settings > Actions > Variables), not secrets, since ARNs # aren't sensitive. - name: Deploy to ECS run: | aws ecs update-service \ --cluster "${{ vars.ECS_CLUSTER_ARN }}" \ --service "${{ vars.CMS_ECS_SERVICE_ARN }}" \ --force-new-deployment \ --region "${{ env.AWS_REGION }}"