50 lines
2.0 KiB
Markdown
50 lines
2.0 KiB
Markdown
# CI/CD — Derived Rules
|
|
|
|
> Derives from `domains/devops/first-principles.md` P2 (Automation), P4 (Rollback First), P5 (Progressive Delivery).
|
|
|
|
## The Pipeline is the Process (P2)
|
|
|
|
- If it is not in the pipeline, it does not happen. Manual deploys are a bug.
|
|
- The pipeline: lint → test → build → deploy → verify.
|
|
- Every step is scripted, versioned, and reproducible. No "run this command on the server."
|
|
|
|
## Lint (P2, core C2 Clarity)
|
|
|
|
- Run the linter on every commit. Fail the build on lint errors.
|
|
- Format check (prettier, gofmt, rustfmt). Format is not a debate; it is automated.
|
|
- Security lint (eslint-plugin-security, bandit, gosec). Catch the obvious ones.
|
|
|
|
## Test (P2, domains/testing)
|
|
|
|
- Unit tests in the pipeline. Fast. Every commit.
|
|
- Integration tests on merge to main. Slower. Every merge.
|
|
- E2E tests before deploy. Slowest. Every deploy candidate.
|
|
|
|
## Build (P7 Immutability)
|
|
|
|
- Build once. The artifact is immutable. The same artifact goes to every environment.
|
|
- The build is reproducible: same commit → same artifact (modulo timestamps, which are stripped).
|
|
- Build artifacts are signed and stored. A deploy is a reference to an artifact, not a rebuild.
|
|
|
|
## Deploy (P4 Rollback First, P5 Progressive Delivery)
|
|
|
|
- Every deploy has a rollback. The rollback is tested before the deploy.
|
|
- Progressive: canary (1% → 10% → 100%), blue-green, or feature flags.
|
|
- No big-bang deploys. A big-bang deploy is a rollback with no rehearsal.
|
|
|
|
## Verify (P3 Observability)
|
|
|
|
- After deploy, verify: health checks, smoke tests, metric watching.
|
|
- A deploy is not "done" when the code is on the server. It is done when the metrics are healthy.
|
|
- Auto-rollback on metric regression. The pipeline watches; humans sleep.
|
|
|
|
## What Violates CI/CD Discipline
|
|
|
|
| Violation | Principle |
|
|
|-----------|-----------|
|
|
| Manual deploy script | P2 Automation |
|
|
| No rollback path | P4 Rollback First |
|
|
| Big-bang deploy to prod | P5 Progressive Delivery |
|
|
| Rebuild per environment | P7 Immutability |
|
|
| Deploy without health check | P3 Observability |
|
|
| No lint in CI | P2, C2 | |