name: Deploy API # Fargate image CD. GitHub Actions builds the Flask image, pushes to ECR, # and registers a new task definition. Terraform owns the cluster, service, # ALB, and ignores container_definitions / task_definition. # # push to main -> dev, at github.sha # release: published -> prod, at the release tag # workflow_dispatch -> chosen environment at a chosen ref # # Releases are cut by a human with `gh release create vX.Y.Z --target main`. # Nothing here creates an HCP run. on: push: branches: [main] paths-ignore: - "terraform/**" - "docs/**" - "*.md" - ".github/workflows/weekly-menu.yml" - ".github/workflows/ci.yml" release: types: [published] workflow_dispatch: inputs: environment: description: "Target Environment" required: true type: choice options: [dev, prod] ref: description: "Git ref to build and deploy (tag, branch, or SHA). Empty means the workflow ref." required: false type: string default: "" permissions: contents: read jobs: deploy-dev: name: Deploy API to dev if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && inputs.environment == 'dev') uses: Sea-Haven-Industries/.github/.github/workflows/cd-hcp-fargate.yaml@2e2b3a282fbd148352a2b7433b58668a47e6bfeb # v1.0.16 permissions: contents: read id-token: write secrets: inherit with: environment: dev ref: ${{ inputs.ref }} ssm-prefix: /meal-order-manager/deploy docker-platform: linux/amd64 extra-task-env: '{"SENTRY_DSN_PARAM":"/meal-order-manager/sentry-dsn"}' deploy-prod: name: Deploy API to prod if: github.event_name == 'release' || (github.event_name == 'workflow_dispatch' && inputs.environment == 'prod') uses: Sea-Haven-Industries/.github/.github/workflows/cd-hcp-fargate.yaml@2e2b3a282fbd148352a2b7433b58668a47e6bfeb # v1.0.16 permissions: contents: read id-token: write secrets: inherit with: environment: prod ref: ${{ github.event.release.tag_name || inputs.ref }} ssm-prefix: /meal-order-manager/deploy docker-platform: linux/amd64 ship-gate: true extra-task-env: '{"SENTRY_DSN_PARAM":"/meal-order-manager/sentry-dsn"}'