on:
push:
tags:
- 'v*.*.*' Tag-driven releases create a clean separation between normal CI and intentionally versioned releases.
Tag-based releases, canaries, rollbacks, smoke tests, migrations, and quality checks.
Use tags, releases, canaries, and rollbacks to reduce risk.
on:
push:
tags:
- 'v*.*.*' Tag-driven releases create a clean separation between normal CI and intentionally versioned releases.
./deploy.sh canary
./check-error-rates.sh
./promote-canary.shCanaries are platform-agnostic. The CI system orchestrates them; your platform decides how traffic shifts.
Keep a simple rollback command or job ready before each production deploy.
./scripts/rollback.sh previousRollback speed matters more than rollback theory during an incident. Make it scripted and obvious.
Add guardrails based on tests, smoke checks, and policies.
npm test -- --coverage
node scripts/check-coverage-threshold.jsCoverage thresholds are blunt instruments, but they can still catch major regressions when used carefully.
curl -fsS https://app.example.com/healthz
curl -fsS https://app.example.com/loginPost-deploy smoke tests are a simple, high-value addition to most pipelines.
./scripts/migrate.sh
./scripts/deploy.shTreat migrations as first-class release steps so they are visible, auditable, and failure-aware.