Skip to content

feat(ci): deploy to prod when a release is published#218

Merged
dkaygithub merged 3 commits into
mainfrom
feat/deploy-prod-on-release
Jun 18, 2026
Merged

feat(ci): deploy to prod when a release is published#218
dkaygithub merged 3 commits into
mainfrom
feat/deploy-prod-on-release

Conversation

@dkaygithub

Copy link
Copy Markdown
Collaborator

Adds Deploy prod, triggered by publishing a GitHub release in this repo. It mirrors the now-working deploy-dev.yml step-for-step (so fixes #211/#212/#215/#217 all carry over), with release semantics:

  • Trigger: release: [published] — cut a release with gh release create v1.2.3 --target main --generate-notes and it ships. Drafts don't fire; publishing them does.
  • Safety gate: refuses to deploy a commit whose Run Tests check isn't green (releases can technically be cut from any commit).
  • Image tags: pushes checkin-prod:<sha> and checkin-prod:<release-tag> for traceability/rollback.
  • Env split: all-prod resources — checkin-prod ECR/cluster/service/task families, checkin-deploy-prod OIDC role, https://ops.innovationtreehouse.org. (Verified all exist in AWS, and the checkin-prod/* secrets all have values.)
  • GitHub environment production is declared, so required-reviewer protection can be layered on in repo settings whenever desired — no workflow change needed.
  • Report: run step summary (releases have no comment thread; happy to wire a Slack hook or release-notes append later if wanted).

Rollback story: re-publish (or re-run the deploy of) the previous release, or update-service to the prior task-def revision.

🤖 Generated with Claude Code

dkaygithub and others added 2 commits June 10, 2026 15:09
Mirrors the now-working deploy-dev pipeline (ARM64 image build, ECS
migrate task, service rollout) with release semantics: triggers on
release published, refuses to ship a commit without green CI, tags the
prod image with both the release tag and the SHA, and reports via the
run summary. Uses the checkin-deploy-prod OIDC role and the production
GitHub environment, so protection rules can be layered on later.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
#219)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@thpr

thpr commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Cross-PR dependency from #249 (event-reminder idempotency): #249 adds migration 20260611000000_add_rsvp_reminder_sent_at and the cron route now filters on RSVP.reminderSentAt: null. Once both land on prod, this deploy must run prisma migrate deploy before the new app code goes live — otherwise GET /api/cron/reminders queries a column that doesn't exist yet and 500s every run. Dev/CI already order this correctly (deploy-dev.yml + CI migrate deploy/migrate diff --exit-code); prod just needs the same ordering guarantee when this PR adds the prod workflow.

@dkaygithub dkaygithub requested review from jee7s and thpr June 14, 2026 01:52
@dkaygithub dkaygithub added this pull request to the merge queue Jun 18, 2026
Merged via the queue into main with commit 892b1de Jun 18, 2026
3 checks passed
@github-actions

Copy link
Copy Markdown

❌ Dev deploy failed

Commit 892b1de did not deploy to dev (status: failure).

  • Deploy run — check the logs.
  • The dev environment still runs the previous image.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants