Vibe Sensei — CI/CD Pipeline Diagrams

Published with Vibe Sensei
CI/CD Pipeline — As-Is
Fluxo completo: branch vibe/* → PR → dev → release/vX.Y.Z → main → tag v* → três workflows paralelos (release.yml Win/Linux/macOS, back-end.yml Railway, landing-deploy.yml Vercel) → GitHub Releases → electron-updater → usuários. Lane Jira em paralelo.
⚠️ Lane Jira: convenção da equipe — não verificável pelo repo
Vibe Sensei — CI/CD Pipeline (as-is) · 2026-07-06 ① Developer & Git Branch Protocol (CLAUDE.md) vibe/* branchfeature / fix / docs Open PR → devHEAD vibe/* | BASE dev ✔ Merge to devintegration branch→ diagrams.yml ↓ Cut release/vX.Y.Zbranch off dev (throwaway) PR release → mainHEAD release/* | BASE main ✔ Merge to mainrelease branch→ landing-deploy ↓ ⚡ Push tag v*3 workflows fire in parallelrelease + backend + landing ⛔ Iron rule: dev & main NEVER as PR HEAD — "automatically delete head branches" is ON (deleted dev on 2026-06-21) ② diagrams.yml — auto-update on push to dev gen-architecture.mjsarch topology from code gen-datamodel.mjsPrisma schema → diagram drawio-export-action.drawio → SVG (headless) Staleness gateauthored diagram check commit back to dev[skip-diagrams] (loop prevention) ③ On push: tag v* — Three workflows fire independently in parallel release.yml — Electron Desktop Builds prepare: ensure clean draft releasevibe-sensei/vibe-ai-release (stale draft → delete first) Parallel platform matrix (fail-fast: false): windows-2022npm ci + typecheck + npm testnpm run release→ latest.yml + latest-linux.yml macos-latest (arm64)npm ci + typecheck + npm testnotarize: CSC + Apple API key→ upload latest-mac.yml artifact merge-macdownload arm64 yml → gh release upload --clobber publishgh release edit --draft=false --latest Notify Slack (continue-on-error)POST /v1/release/announce → backend → #releases back-end.yml — Railway Backend ⚠️ Gate: BACKEND_DEPLOY_ENABLED=true required (disabled by default) migrateprisma migrate status → prisma migrate deployPROD DB (BACKEND_DATABASE_URL) — additive-only🔒 public proxy URL (not .railway.internal) deployrailway up --service $RAILWAY_SERVICE --detach smoke check (single, non-looping)sleep 30 → curl -fsS $BACKEND_HEALTH_URL ⚠️ alert on failureprod left on previous image landing-deploy.yml — Vercel Landing Trigger: push main (landing/**) OR tag v* OR workflow_dispatch vercel pull --yes --environment=productionVERCEL_ORG_ID + VERCEL_PROJECT_ID → .vercel/project.json vercel build --prodrootDirectory=landing vercel deploy --prebuilt --prodVERCEL_TOKEN 🌐 Vercel Productionvibe-sensei Landing Page — live ⑤ secret-scan.yml — Manual / workflow_dispatch ONLYgitleaks detect --config .gitleaks.toml --redact --verboseCloud CI retired 2026-06-20 · local Docker CI is the gate ④ Delivery — GitHub Releases → electron-updater → Users GitHub Releasesvibe-sensei/vibe-ai-release Update Feed Fileslatest.yml (Win + Linux)latest-mac.yml (macOS arm64) electron-updaterpolls on startup, silent download 👤 End UsersMac (arm64) · Windows · Linux ⑥ Jira — Team Workflow ★ per team convention (not in repo) Backlog Ready for Dev In Progress Code Review Ready for QA QA / Testing Ready for Deploy Done ✓ Sources: .github/workflows/*.yml · back-end/README.md · CLAUDE.md · Jira lane: per team convention

Workflows ativos

  • release.yml — tag v* → Win+Linux+macOS builds
  • back-end.yml — tag v* → Prisma migrate + Railway up
  • landing-deploy.yml — main/tag → Vercel production
  • diagrams.yml — dev push → auto-gen + SVG export
  • secret-scan.yml — manual/dispatch only (gitleaks)

Regras críticas

  • ⛔ dev & main NEVER como PR HEAD
  • ⛔ Nunca loop no Railway CLI
  • ⛔ back-end.yml disabled por default
  • ⛔ No PostHog key no binário Electron
  • ⛔ Migrações apenas aditivas

Lane Jira ★ unverified

  • Backlog → Ready for Dev → In Progress
  • Code Review → Ready for QA → QA/Testing
  • Ready for Deploy → Done ✓
  • ⚠️ Status não encontrados no repo — convenção da equipe
QA Pipeline — To-Be (proposto)
Pipeline de QA proposto. Atualmente apenas QA manual existe. Gate automatizado (Playwright E2E + secret scan always-on) ainda não foi implementado.
Vibe Sensei — QA Pipeline (to-be) · 2026-07-06 Proposed quality gate between Merge to dev and Ready for Deploy. Currently only manual QA is performed. ① QA Ticket Intake Jira: Ready for QAticket enters QA lane QA checklist createdacceptance criteria mapped ② Automated Gate — runs on dev branch after every merge Playwright headlessE2E smoke (golden paths)npm run test:e2e Unit + Integrationnpm test + typecheckcurrently on release tag only Migration dry-runprisma migrate statusadditive-only drift check Secret scangitleaks detectto-be: PR check always-on AutoGate PASS Auto✔ Pass FAIL Block & notifyJira ← back to In Progress ③ Manual QA — performed by QA engineer on dev environment RBAC & Multi-tenantrole isolation admin/membercross-tenant data leak check Accessibility (a11y)keyboard nav · ARIA labelsWCAG AA contrast Regression Suitecritical user journeysgolden-path smoke on dev Evidence in Jirascreenshots + sign-offQA engineer approval ManualGate PASS Manual ✔ PassJira → Ready for Deploy FAIL Defect logged in Jira← back to In Progress ④ Release Gate — both gates PASS → proceed to tag & release Ready for Deploy Cut release/vX.Y.Z PR release → main ⚡ Push tag v*→ CI/CD as-is (Page 1) Release Published · Done ✓ PROPOSED — Automated gate does not yet exist. Manual QA only today.

Gate automatizado (to-be)

  • Playwright headless — E2E smoke suite
  • Unit + Integration — npm test + typecheck
  • Migration dry-run — schema drift detection
  • Secret scan — gitleaks always-on PR check

QA manual (hoje)

  • RBAC / multi-tenant — isolamento de roles
  • Acessibilidade — WCAG AA
  • Regressão — jornadas críticas
  • Evidências no Jira — sign-off

Status

  • Playwright E2E: não implementado
  • secret-scan PR check: pendente
  • typecheck+test: existe (só em tag)