Commit Graph

14 Commits

Author SHA1 Message Date
Jordan Ritter 0b44960db8 Decouple showcase build and deploy into separate workflows
The old "Showcase: Build & Deploy" workflow used a single concurrency group
that cancelled in-flight builds on every push to main. When multiple PRs
merged in quick succession, most service builds got cancelled and never
deployed.

Split into two workflows:

1. showcase_build.yml ("Showcase: Build & Push") - triggered on push to main,
   builds Docker images and pushes to GHCR. Has NO concurrency group so every
   run completes. Railway auto-update picks up the new :latest tag.

2. showcase_deploy.yml ("Showcase: Verify Deploy") - triggered by workflow_run
   from the build workflow. Polls Railway to verify each service picked up the
   new image and is healthy. Uses cancel-in-progress since verification is
   idempotent. Posts results to showcase-harness via webhook.

Also updates showcase_capture-previews.yml to trigger from the renamed build
workflow.
2026-04-29 22:22:33 -07:00
Jordan Ritter d4736a911a fix(showcase): update CI workflows, Dockerfiles, and configs
for integrations/ rename

Update GitHub Actions workflows to reference
showcase/integrations/ instead of showcase/packages/.
Fix Dockerfiles to dereference symlinks during COPY.
Remove obsolete showcase_template-drift workflow.
Update docker-compose, shell Dockerfiles, and registry paths.
2026-04-28 07:51:06 -07:00
Jordan Ritter df42fb32bc fix(showcase): update CI workflows for gitignored generated data
- deploy workflow: add shared/scripts/manifest paths to shell-dashboard
  and shell-docs filters (previously triggered implicitly by committed
  JSON diffs in those directories)
- capture-previews: add generate-registry step before capture; use
  git add -f for the gitignored registry.json
- e2e smoke test: document generator dependency in import comment
2026-04-23 21:13:29 -07:00
Jordan Ritter cc39ef0c31 fix(showcase): rebase-and-retry on capture-previews registry push
The capture job can take ~30 minutes, during which other commits
routinely land on main. Without a rebase-and-retry loop, the
devops-bot push loses the race and fails with "fetch first".

Observed in runs 24799601181 and 24809331709 on 2026-04-22,
both failing at the same step with identical remote-rejected-push
output. Bounded to 5 attempts so a persistent failure still
surfaces rather than looping forever.
2026-04-22 17:29:43 -07:00
Jordan Ritter 466cbcebfe style: auto-fix formatting 2026-04-22 10:06:51 -07:00
Jordan Ritter 097e4ac357 ci(showcase/capture-previews): alert oss-alerts on job failure
The workflow runs exclusively on main-branch pushes, completed
"Showcase: Build & Deploy" runs, and manual dispatch — all production
events where silent failures (e.g. the GH013 PROTECT_OUR_MAIN
regression that motivated PR #4159) must surface in #oss-alerts
rather than getting buried in the Actions tab.

Mirrors the failure-alert pattern from showcase_validate.yml:
  - Hoist SLACK_WEBHOOK_OSS_ALERTS into a job-level env var so
    step-level `if:` expressions can reference it (secrets.* is
    not a valid named-value inside `if:`).
  - Best-effort "Extract failure details" step pulls the failed
    step name and first meaningful error line from the jobs API +
    `gh run view --log-failed`, truncated to 300 chars.
  - `slackapi/slack-github-action@v2.1.0` with toJSON(format(...))
    wrapping to safely JSON-encode any dynamic values.
  - Fallback `::warning::` log when the webhook secret is unset so
    the gap is still visible in the workflow output.

Gated on `failure() && env.SLACK_WEBHOOK != ''`. No `github.event_name`
filter needed — this workflow has no pull_request trigger, so every
failure is an actionable production event.
2026-04-22 09:55:30 -07:00
Jordan Ritter dff94fb429 fix(ci): capture-previews uses devops-bot token to bypass main branch protection 2026-04-22 09:52:59 -07:00
Alem Tuzlak 7c00903c6a Merge remote-tracking branch 'origin/main' into jpr5/ci-workflow-optimization
# Conflicts:
#	.github/workflows/showcase_capture-previews.yml
2026-04-22 13:03:04 +02:00
Jordan Ritter ed065725a4 fix: address CR findings — deploy needs, rebuild loop resilience, merge-failure alert, loop prevention, drift failure alert 2026-04-12 14:57:18 -07:00
Jordan Ritter c0fb38959a fix: add Slack alerts across all showcase workflows, fix silent failures and loop risk 2026-04-12 14:50:21 -07:00
Jordan Ritter 80ea96fefe feat: Switch preview captures from GIF to MP4 with GitHub Release storage 2026-04-10 13:30:24 -07:00
Jordan Ritter 5579cfd6aa feat: add image drift detection to showcase drift checks 2026-04-09 15:54:10 -07:00
Jordan Ritter 204dd29a97 fix: standardize health checks on /health port 8000 2026-04-08 21:22:35 -07:00
Jordan Ritter 759ffeb29a feat: add animated preview GIFs with per-demo capture automation 2026-04-08 19:59:30 -07:00