ccjk 14.1.10 → 14.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/dist/chunks/agent-teams.mjs +1 -1
  2. package/dist/chunks/api-cli.mjs +1 -1
  3. package/dist/chunks/api-config-selector.mjs +3 -3
  4. package/dist/chunks/ccjk-all.mjs +1 -1
  5. package/dist/chunks/ccjk-mcp.mjs +1 -1
  6. package/dist/chunks/ccjk-setup.mjs +1 -1
  7. package/dist/chunks/ccr.mjs +8 -8
  8. package/dist/chunks/check-updates.mjs +1 -1
  9. package/dist/chunks/claude-code-incremental-manager.mjs +3 -3
  10. package/dist/chunks/claude-config.mjs +1 -1
  11. package/dist/chunks/codex-config-switch.mjs +1 -1
  12. package/dist/chunks/codex-provider-manager.mjs +1 -1
  13. package/dist/chunks/config-switch.mjs +1 -1
  14. package/dist/chunks/config.mjs +19 -3
  15. package/dist/chunks/config2.mjs +1 -1
  16. package/dist/chunks/config3.mjs +1 -1
  17. package/dist/chunks/doctor.mjs +175 -6
  18. package/dist/chunks/features.mjs +3 -3
  19. package/dist/chunks/index10.mjs +19 -5
  20. package/dist/chunks/init.mjs +5 -5
  21. package/dist/chunks/mcp-cli.mjs +3 -3
  22. package/dist/chunks/mcp.mjs +3 -3
  23. package/dist/chunks/package.mjs +1 -1
  24. package/dist/chunks/quick-provider.mjs +1 -1
  25. package/dist/chunks/quick-setup.mjs +5 -5
  26. package/dist/chunks/simple-config.mjs +1 -1
  27. package/dist/chunks/smart-guide.mjs +1 -1
  28. package/dist/chunks/update.mjs +6 -6
  29. package/dist/chunks/zero-config.mjs +7 -4
  30. package/dist/cli.mjs +0 -0
  31. package/dist/index.d.mts +3 -0
  32. package/dist/index.d.ts +3 -0
  33. package/dist/index.mjs +1 -1
  34. package/dist/shared/{ccjk.BJ3Zpjo5.mjs → ccjk.BCzOWT1L.mjs} +3 -2
  35. package/dist/shared/{ccjk.B8oqkakg.mjs → ccjk.BLsIiTqO.mjs} +1 -1
  36. package/dist/shared/{ccjk.Hwoicrh8.mjs → ccjk.BXv8aYs1.mjs} +1 -1
  37. package/dist/shared/{ccjk.B9OuS4xZ.mjs → ccjk.CfKJnpbB.mjs} +1 -1
  38. package/dist/shared/{ccjk.BzxpiEPF.mjs → ccjk.Cgv_cFVX.mjs} +2 -2
  39. package/dist/shared/{ccjk.Di1IYU3u.mjs → ccjk.DDL-4C-k.mjs} +47 -10
  40. package/dist/shared/{ccjk.BEiR3L4C.mjs → ccjk.DOw7Fawt.mjs} +3 -3
  41. package/dist/shared/{ccjk.tI_s2uSh.mjs → ccjk.f3TBLJSt.mjs} +1 -1
  42. package/dist/templates/agents/README.md +78 -0
  43. package/dist/templates/common/error-prevention.md +267 -0
  44. package/dist/templates/common/karpathy-baseline.md +83 -0
  45. package/dist/templates/common/output-styles/zh-CN/carmack-mode.md +381 -0
  46. package/dist/templates/common/output-styles/zh-CN/dhh-mode.md +265 -0
  47. package/dist/templates/common/output-styles/zh-CN/evan-you-mode.md +539 -0
  48. package/dist/templates/common/output-styles/zh-CN/jobs-mode.md +369 -0
  49. package/dist/templates/common/output-styles/zh-CN/linus-mode.md +135 -0
  50. package/dist/templates/common/output-styles/zh-CN/uncle-bob-mode.md +221 -0
  51. package/dist/templates/common/workflow/continuousDelivery/en/continuous-delivery.md +628 -0
  52. package/dist/templates/common/workflow/continuousDelivery/zh-CN/continuous-delivery.md +628 -0
  53. package/dist/templates/common/workflow/essential/en/agents/ccjk-config-agent.md +187 -0
  54. package/dist/templates/common/workflow/essential/en/agents/ccjk-mcp-agent.md +191 -0
  55. package/dist/templates/common/workflow/essential/en/agents/ccjk-skill-agent.md +249 -0
  56. package/dist/templates/common/workflow/essential/en/agents/ccjk-workflow-agent.md +277 -0
  57. package/dist/templates/common/workflow/essential/en/agents/get-current-datetime.md +29 -0
  58. package/dist/templates/common/workflow/essential/en/agents/init-architect.md +115 -0
  59. package/dist/templates/common/workflow/essential/en/agents/ui-ux-designer.md +91 -0
  60. package/dist/templates/common/workflow/essential/en/feat.md +92 -0
  61. package/dist/templates/common/workflow/essential/en/goal.md +147 -0
  62. package/dist/templates/common/workflow/essential/en/init-project.md +53 -0
  63. package/dist/templates/common/workflow/essential/zh-CN/agents/get-current-datetime.md +29 -0
  64. package/dist/templates/common/workflow/essential/zh-CN/agents/init-architect.md +115 -0
  65. package/dist/templates/common/workflow/essential/zh-CN/agents/ui-ux-designer.md +91 -0
  66. package/dist/templates/common/workflow/essential/zh-CN/feat.md +315 -0
  67. package/dist/templates/common/workflow/essential/zh-CN/goal.md +146 -0
  68. package/dist/templates/common/workflow/essential/zh-CN/init-project.md +53 -0
  69. package/dist/templates/common/workflow/git/en/git-cleanBranches.md +102 -0
  70. package/dist/templates/common/workflow/git/en/git-commit.md +205 -0
  71. package/dist/templates/common/workflow/git/en/git-rollback.md +90 -0
  72. package/dist/templates/common/workflow/git/en/git-worktree.md +276 -0
  73. package/dist/templates/common/workflow/git/zh-CN/git-cleanBranches.md +102 -0
  74. package/dist/templates/common/workflow/git/zh-CN/git-commit.md +205 -0
  75. package/dist/templates/common/workflow/git/zh-CN/git-rollback.md +90 -0
  76. package/dist/templates/common/workflow/git/zh-CN/git-worktree.md +276 -0
  77. package/dist/templates/common/workflow/interview/en/interview.md +67 -0
  78. package/dist/templates/common/workflow/interview/zh-CN/interview.md +67 -0
  79. package/dist/templates/common/workflow/linearMethod/en/linear-method.md +651 -0
  80. package/dist/templates/common/workflow/linearMethod/zh-CN/linear-method.md +752 -0
  81. package/dist/templates/common/workflow/refactoringMaster/en/refactoring-master.md +516 -0
  82. package/dist/templates/common/workflow/refactoringMaster/zh-CN/refactoring-master.md +812 -0
  83. package/dist/templates/common/workflow/sixStep/en/workflow.md +83 -0
  84. package/dist/templates/common/workflow/sixStep/zh-CN/workflow.md +359 -0
  85. package/dist/templates/common/workflow/specFirstTDD/en/spec-first-tdd.md +364 -0
  86. package/dist/templates/common/workflow/specFirstTDD/zh-CN/spec-first-tdd.md +366 -0
  87. package/dist/templates/hooks/README.md +212 -0
  88. package/dist/templates/hooks/git-workflow-hooks.md +551 -0
  89. package/dist/templates/hooks/post-test-coverage.md +434 -0
  90. package/dist/templates/hooks/pre-commit-black.md +274 -0
  91. package/dist/templates/hooks/pre-commit-eslint.md +153 -0
  92. package/dist/templates/hooks/pre-commit-gofmt.md +284 -0
  93. package/dist/templates/hooks/pre-commit-prettier.md +212 -0
  94. package/dist/templates/hooks/pre-commit-type-check.md +377 -0
  95. package/dist/templates/skills/ccjk-init.md +154 -0
  96. package/dist/templates/skills/ccjk-mcp-setup.md +205 -0
  97. package/dist/templates/skills/ccjk-troubleshoot.md +228 -0
  98. package/dist/templates/skills/django-patterns.md +1016 -0
  99. package/dist/templates/skills/git-workflow.md +748 -0
  100. package/dist/templates/skills/go-idioms.md +963 -0
  101. package/dist/templates/skills/nextjs-optimization.md +694 -0
  102. package/dist/templates/skills/python-pep8.md +852 -0
  103. package/dist/templates/skills/react-patterns.md +686 -0
  104. package/dist/templates/skills/rust-patterns.md +1057 -0
  105. package/dist/templates/skills/security-best-practices.md +1413 -0
  106. package/dist/templates/skills/testing-best-practices.md +1315 -0
  107. package/dist/templates/skills/ts-best-practices.md +354 -0
  108. package/package.json +40 -43
  109. package/templates/common/karpathy-baseline.md +83 -0
  110. package/templates/common/output-styles/zh-CN/carmack-mode.md +14 -0
  111. package/templates/common/output-styles/zh-CN/dhh-mode.md +14 -0
  112. package/templates/common/output-styles/zh-CN/evan-you-mode.md +14 -0
  113. package/templates/common/output-styles/zh-CN/jobs-mode.md +14 -0
  114. package/templates/common/output-styles/zh-CN/linus-mode.md +14 -0
  115. package/templates/common/output-styles/zh-CN/uncle-bob-mode.md +14 -0
  116. package/templates/common/workflow/linearMethod/zh-CN/linear-method.md +2 -0
  117. package/templates/common/workflow/refactoringMaster/zh-CN/refactoring-master.md +2 -0
  118. package/templates/common/workflow/sixStep/zh-CN/workflow.md +2 -0
  119. package/templates/common/workflow/specFirstTDD/zh-CN/spec-first-tdd.md +2 -0
@@ -0,0 +1,628 @@
1
+ ---
2
+ description: Continuous Delivery Pipeline - Automated build, test, and deploy for software ready to release anytime
3
+ allowed-tools: Read(**), Write(**), Exec(npm run build, npm test, docker build, docker push, kubectl apply)
4
+ argument-hint: [--env <staging|production>] [--skip-tests] [--rollback] [--canary]
5
+ # examples:
6
+ # - /continuous-delivery # Deploy to staging
7
+ # - /continuous-delivery --env production # Deploy to production
8
+ # - /continuous-delivery --canary # Canary release
9
+ # - /continuous-delivery --rollback # Rollback to previous version
10
+ ---
11
+
12
+ # Continuous Delivery Pipeline
13
+
14
+ Based on Jez Humble and David Farley's *Continuous Delivery* and modern DevOps practices for automated delivery pipeline.
15
+
16
+ ---
17
+
18
+ ## Core Philosophy
19
+
20
+ **Continuous Delivery (CD)**:
21
+ - Code is always in a releasable state
22
+ - Automated build, test, and deployment process
23
+ - Fast, reliable, repeatable releases
24
+ - Reduce release risk, increase delivery frequency
25
+
26
+ **Key Principles**:
27
+ 1. **Automate Everything**: From code commit to production deployment
28
+ 2. **Fast Feedback**: Every commit triggers complete validation
29
+ 3. **Small Batch Releases**: Frequent small changes reduce risk
30
+ 4. **Environment Consistency**: Dev, test, prod configs are identical
31
+ 5. **Observability**: Full-stack monitoring and log tracing
32
+
33
+ ---
34
+
35
+ ## Pipeline Stages
36
+
37
+ ### Stage 1: Source Control
38
+
39
+ **Triggers**:
40
+ - Git push to main branch
41
+ - Pull Request merge
42
+ - Scheduled builds (nightly)
43
+
44
+ ```yaml
45
+ # .github/workflows/cd-pipeline.yml
46
+ name: Continuous Delivery Pipeline
47
+
48
+ on:
49
+ push:
50
+ branches: [main, develop]
51
+ pull_request:
52
+ branches: [main]
53
+ schedule:
54
+ - cron: '0 2 * * *' # Daily at 2 AM
55
+ ```
56
+
57
+ **Checks**:
58
+ - ✅ Code committed to version control
59
+ - ✅ Commit message follows convention
60
+ - ✅ Branch protection rules configured
61
+
62
+ ---
63
+
64
+ ### Stage 2: Build
65
+
66
+ **Goal**: Compile source code into deployable artifacts
67
+
68
+ ```bash
69
+ # 1. Install dependencies
70
+ npm ci # Use ci instead of install for consistent versions
71
+
72
+ # 2. Code checks
73
+ npm run lint
74
+ npm run type-check
75
+
76
+ # 3. Build
77
+ npm run build
78
+
79
+ # 4. Generate version
80
+ VERSION=$(git describe --tags --always)
81
+ echo "Building version: $VERSION"
82
+ ```
83
+
84
+ **Build Optimization**:
85
+ ```dockerfile
86
+ # Dockerfile - Multi-stage build
87
+ FROM node:20-alpine AS builder
88
+ WORKDIR /app
89
+ COPY package*.json ./
90
+ RUN npm ci --only=production
91
+ COPY . .
92
+ RUN npm run build
93
+
94
+ FROM node:20-alpine AS runtime
95
+ WORKDIR /app
96
+ COPY --from=builder /app/dist ./dist
97
+ COPY --from=builder /app/node_modules ./node_modules
98
+ EXPOSE 3000
99
+ CMD ["node", "dist/index.js"]
100
+ ```
101
+
102
+ **Checks**:
103
+ - ✅ Build succeeds without errors
104
+ - ✅ Artifact size reasonable (< 500MB)
105
+ - ✅ Version tagged
106
+ - ✅ Build time < 10 minutes
107
+
108
+ ---
109
+
110
+ ### Stage 3: Test
111
+
112
+ **Goal**: Automated validation of code quality and functionality
113
+
114
+ #### 3.1 Unit Tests
115
+
116
+ ```bash
117
+ npm run test:unit -- --coverage --ci
118
+
119
+ # Coverage requirements
120
+ # Statements : 80%
121
+ # Branches : 75%
122
+ # Functions : 80%
123
+ # Lines : 80%
124
+ ```
125
+
126
+ #### 3.2 Integration Tests
127
+
128
+ ```bash
129
+ # Start test database
130
+ docker-compose -f docker-compose.test.yml up -d
131
+
132
+ # Run integration tests
133
+ npm run test:integration
134
+
135
+ # Cleanup
136
+ docker-compose -f docker-compose.test.yml down
137
+ ```
138
+
139
+ #### 3.3 E2E Tests
140
+
141
+ ```bash
142
+ # Start application
143
+ npm run start:test &
144
+ APP_PID=$!
145
+
146
+ # Wait for app ready
147
+ wait-on http://localhost:3000/health
148
+
149
+ # Run E2E tests
150
+ npm run test:e2e
151
+
152
+ # Cleanup
153
+ kill $APP_PID
154
+ ```
155
+
156
+ #### 3.4 Performance Tests
157
+
158
+ ```bash
159
+ # Load testing with k6
160
+ k6 run --vus 100 --duration 30s tests/load/api-test.js
161
+
162
+ # Performance benchmarks
163
+ # - P95 latency < 200ms
164
+ # - Throughput > 1000 req/s
165
+ # - Error rate < 0.1%
166
+ ```
167
+
168
+ #### 3.5 Security Scan
169
+
170
+ ```bash
171
+ # Dependency vulnerability scan
172
+ npm audit --audit-level=moderate
173
+
174
+ # Container image scan
175
+ trivy image myapp:$VERSION
176
+
177
+ # SAST static analysis
178
+ sonar-scanner
179
+ ```
180
+
181
+ **Checks**:
182
+ - ✅ All tests pass
183
+ - ✅ Coverage meets threshold
184
+ - ✅ No high-severity vulnerabilities
185
+ - ✅ Performance metrics meet requirements
186
+
187
+ ---
188
+
189
+ ### Stage 4: Package
190
+
191
+ **Goal**: Create immutable deployment artifacts
192
+
193
+ ```bash
194
+ # 1. Build Docker image
195
+ docker build -t myapp:$VERSION .
196
+
197
+ # 2. Tag image
198
+ docker tag myapp:$VERSION registry.example.com/myapp:$VERSION
199
+ docker tag myapp:$VERSION registry.example.com/myapp:latest
200
+
201
+ # 3. Push to registry
202
+ docker push registry.example.com/myapp:$VERSION
203
+ docker push registry.example.com/myapp:latest
204
+
205
+ # 4. Generate SBOM (Software Bill of Materials)
206
+ syft registry.example.com/myapp:$VERSION -o spdx-json > sbom.json
207
+
208
+ # 5. Sign image
209
+ cosign sign registry.example.com/myapp:$VERSION
210
+ ```
211
+
212
+ **Artifact Metadata**:
213
+ ```json
214
+ {
215
+ "artifact": {
216
+ "name": "myapp",
217
+ "version": "v1.2.3",
218
+ "commit": "abc123",
219
+ "buildTime": "2025-02-04T10:30:00Z",
220
+ "registry": "registry.example.com",
221
+ "digest": "sha256:...",
222
+ "size": "245MB"
223
+ }
224
+ }
225
+ ```
226
+
227
+ **Checks**:
228
+ - ✅ Image built successfully
229
+ - ✅ Image pushed to registry
230
+ - ✅ Image signed and verified
231
+ - ✅ SBOM generated
232
+
233
+ ---
234
+
235
+ ### Stage 5: Deploy
236
+
237
+ **Goal**: Deploy artifacts to target environment
238
+
239
+ #### 5.1 Staging Deployment
240
+
241
+ ```bash
242
+ # 1. Update Kubernetes config
243
+ kubectl set image deployment/myapp \
244
+ myapp=registry.example.com/myapp:$VERSION \
245
+ -n staging
246
+
247
+ # 2. Wait for rollout
248
+ kubectl rollout status deployment/myapp -n staging
249
+
250
+ # 3. Health check
251
+ kubectl get pods -n staging -l app=myapp
252
+ curl https://staging.example.com/health
253
+
254
+ # 4. Smoke tests
255
+ npm run test:smoke -- --env staging
256
+ ```
257
+
258
+ #### 5.2 Production Deployment
259
+
260
+ **Blue-Green Deployment**:
261
+
262
+ ```bash
263
+ # 1. Deploy new version to Green environment
264
+ kubectl apply -f k8s/deployment-green.yml
265
+
266
+ # 2. Wait for Green ready
267
+ kubectl wait --for=condition=available deployment/myapp-green
268
+
269
+ # 3. Run validation tests
270
+ npm run test:smoke -- --env green
271
+
272
+ # 4. Switch traffic to Green
273
+ kubectl patch service myapp -p '{"spec":{"selector":{"version":"green"}}}'
274
+
275
+ # 5. Monitor for 5 minutes
276
+ sleep 300
277
+
278
+ # 6. If healthy, delete Blue
279
+ kubectl delete deployment myapp-blue
280
+ ```
281
+
282
+ **Canary Deployment**:
283
+
284
+ ```bash
285
+ # 1. Deploy canary version (5% traffic)
286
+ kubectl apply -f k8s/canary.yml
287
+
288
+ # 2. Monitor key metrics
289
+ while true; do
290
+ ERROR_RATE=$(prometheus-query 'rate(http_errors[5m])')
291
+ if [ $ERROR_RATE -gt 0.01 ]; then
292
+ echo "Error rate too high, rolling back"
293
+ kubectl delete -f k8s/canary.yml
294
+ exit 1
295
+ fi
296
+ sleep 60
297
+ done
298
+
299
+ # 3. Gradually increase traffic: 5% -> 25% -> 50% -> 100%
300
+ kubectl patch deployment myapp-canary -p '{"spec":{"replicas":5}}'
301
+ ```
302
+
303
+ **Checks**:
304
+ - ✅ Deployment successful
305
+ - ✅ Health checks pass
306
+ - ✅ Smoke tests pass
307
+ - ✅ Key metrics normal
308
+
309
+ ---
310
+
311
+ ### Stage 6: Monitor
312
+
313
+ **Goal**: Real-time monitoring of application health and business metrics
314
+
315
+ #### 6.1 Infrastructure Monitoring
316
+
317
+ ```yaml
318
+ # Prometheus metrics
319
+ metrics:
320
+ - name: http_requests_total
321
+ type: counter
322
+ help: Total HTTP requests
323
+
324
+ - name: http_request_duration_seconds
325
+ type: histogram
326
+ help: HTTP request latency
327
+
328
+ - name: app_errors_total
329
+ type: counter
330
+ help: Total application errors
331
+
332
+ - name: db_connections_active
333
+ type: gauge
334
+ help: Active database connections
335
+ ```
336
+
337
+ #### 6.2 Log Aggregation
338
+
339
+ ```json
340
+ // Structured logging
341
+ {
342
+ "timestamp": "2025-02-04T10:30:00Z",
343
+ "level": "info",
344
+ "service": "myapp",
345
+ "version": "v1.2.3",
346
+ "traceId": "abc123",
347
+ "message": "User login successful",
348
+ "userId": "user-456",
349
+ "duration": 120
350
+ }
351
+ ```
352
+
353
+ #### 6.3 Alert Rules
354
+
355
+ ```yaml
356
+ # Alertmanager configuration
357
+ alerts:
358
+ - name: HighErrorRate
359
+ expr: rate(http_errors[5m]) > 0.05
360
+ severity: critical
361
+ message: "Error rate > 5% for 5 minutes"
362
+
363
+ - name: HighLatency
364
+ expr: histogram_quantile(0.95, http_request_duration_seconds) > 1
365
+ severity: warning
366
+ message: "P95 latency > 1s"
367
+
368
+ - name: LowAvailability
369
+ expr: up{job="myapp"} < 0.99
370
+ severity: critical
371
+ message: "Service availability < 99%"
372
+ ```
373
+
374
+ #### 6.4 Business Metrics
375
+
376
+ ```typescript
377
+ // Key business metrics
378
+ const businessMetrics = {
379
+ dailyActiveUsers: 12500,
380
+ conversionRate: 0.032,
381
+ averageOrderValue: 89.50,
382
+ customerSatisfaction: 4.7
383
+ }
384
+ ```
385
+
386
+ ---
387
+
388
+ ### Stage 7: Rollback
389
+
390
+ **Goal**: Quickly rollback to previous stable version
391
+
392
+ ```bash
393
+ # 1. View deployment history
394
+ kubectl rollout history deployment/myapp
395
+
396
+ # 2. Rollback to previous version
397
+ kubectl rollout undo deployment/myapp
398
+
399
+ # 3. Rollback to specific version
400
+ kubectl rollout undo deployment/myapp --to-revision=3
401
+
402
+ # 4. Verify rollback
403
+ kubectl rollout status deployment/myapp
404
+ curl https://api.example.com/health
405
+
406
+ # 5. Notify team
407
+ slack-notify "🔄 Rolled back myapp to v1.2.2 due to high error rate"
408
+ ```
409
+
410
+ **Auto-rollback Conditions**:
411
+ - Error rate > 5%
412
+ - P95 latency > 2 seconds
413
+ - Health check failures
414
+ - Critical business metric anomalies
415
+
416
+ ---
417
+
418
+ ## Deployment Strategies
419
+
420
+ ### 1. Rolling Update
421
+
422
+ ```yaml
423
+ apiVersion: apps/v1
424
+ kind: Deployment
425
+ metadata:
426
+ name: myapp
427
+ spec:
428
+ replicas: 10
429
+ strategy:
430
+ type: RollingUpdate
431
+ rollingUpdate:
432
+ maxSurge: 2 # Max 2 extra pods
433
+ maxUnavailable: 1 # Max 1 pod unavailable
434
+ ```
435
+
436
+ **Pros**:
437
+ - Zero downtime
438
+ - High resource efficiency
439
+ - Simple implementation
440
+
441
+ **Cons**:
442
+ - Mixed versions coexist
443
+ - Slower rollback
444
+
445
+ ---
446
+
447
+ ### 2. Blue-Green Deployment
448
+
449
+ ```
450
+ [Blue v1.0] ← 100% traffic
451
+ [Green v1.1] ← 0% traffic
452
+
453
+ After switch:
454
+ [Blue v1.0] ← 0% traffic (kept for rollback)
455
+ [Green v1.1] ← 100% traffic
456
+ ```
457
+
458
+ **Pros**:
459
+ - Instant switch
460
+ - Fast rollback
461
+ - Thorough testing
462
+
463
+ **Cons**:
464
+ - Requires double resources
465
+ - Complex database migrations
466
+
467
+ ---
468
+
469
+ ### 3. Canary Release
470
+
471
+ ```
472
+ Phase 1: [v1.0: 95%] [v1.1: 5%]
473
+ Phase 2: [v1.0: 75%] [v1.1: 25%]
474
+ Phase 3: [v1.0: 50%] [v1.1: 50%]
475
+ Phase 4: [v1.0: 0%] [v1.1: 100%]
476
+ ```
477
+
478
+ **Pros**:
479
+ - Progressive rollout
480
+ - Controlled risk
481
+ - Real traffic validation
482
+
483
+ **Cons**:
484
+ - Complex implementation
485
+ - Longer release time
486
+
487
+ ---
488
+
489
+ ## Pipeline Configuration
490
+
491
+ ### Environment Configuration
492
+
493
+ ```yaml
494
+ # config/environments.yml
495
+ environments:
496
+ development:
497
+ url: http://localhost:3000
498
+ database: dev-db
499
+ replicas: 1
500
+
501
+ staging:
502
+ url: https://staging.example.com
503
+ database: staging-db
504
+ replicas: 3
505
+
506
+ production:
507
+ url: https://api.example.com
508
+ database: prod-db
509
+ replicas: 10
510
+ autoScale:
511
+ min: 10
512
+ max: 50
513
+ targetCPU: 70
514
+ ```
515
+
516
+ ### Quality Gates
517
+
518
+ ```yaml
519
+ # Pre-deployment requirements
520
+ quality-gates:
521
+ - name: test-coverage
522
+ threshold: 80
523
+ blocking: true
524
+
525
+ - name: code-quality
526
+ sonarqube:
527
+ bugs: 0
528
+ vulnerabilities: 0
529
+ code-smells: < 10
530
+ blocking: true
531
+
532
+ - name: performance
533
+ p95-latency: < 200ms
534
+ throughput: > 1000 rps
535
+ blocking: false
536
+ ```
537
+
538
+ ---
539
+
540
+ ## Best Practices
541
+
542
+ ### 1. Version Management
543
+
544
+ ```bash
545
+ # Semantic versioning
546
+ MAJOR.MINOR.PATCH
547
+
548
+ # Example
549
+ v1.2.3
550
+ │ │ └─ Patch (bug fixes)
551
+ │ └─── Minor (new features, backward compatible)
552
+ └───── Major (breaking changes)
553
+ ```
554
+
555
+ ### 2. Configuration Management
556
+
557
+ ```typescript
558
+ // ✅ Good: Externalized config
559
+ const config = {
560
+ database: process.env.DATABASE_URL,
561
+ apiKey: process.env.API_KEY,
562
+ logLevel: process.env.LOG_LEVEL || 'info'
563
+ }
564
+
565
+ // ❌ Bad: Hardcoded config
566
+ const config = {
567
+ database: 'postgres://localhost:5432/mydb',
568
+ apiKey: 'sk-1234567890'
569
+ }
570
+ ```
571
+
572
+ ### 3. Database Migrations
573
+
574
+ ```bash
575
+ # Backward-compatible migration strategy
576
+ # Phase 1: Add new column (nullable)
577
+ ALTER TABLE users ADD COLUMN email_verified BOOLEAN;
578
+
579
+ # Phase 2: Deploy new code (supports both old and new columns)
580
+ # Phase 3: Data migration
581
+ UPDATE users SET email_verified = true WHERE email IS NOT NULL;
582
+
583
+ # Phase 4: Add constraint
584
+ ALTER TABLE users ALTER COLUMN email_verified SET NOT NULL;
585
+
586
+ # Phase 5: Drop old column (next release)
587
+ ALTER TABLE users DROP COLUMN old_email_field;
588
+ ```
589
+
590
+ ### 4. Feature Flags
591
+
592
+ ```typescript
593
+ // Use feature flags to control new feature rollout
594
+ if (featureFlags.isEnabled('new-checkout-flow', user)) {
595
+ return newCheckoutFlow()
596
+ } else {
597
+ return legacyCheckoutFlow()
598
+ }
599
+ ```
600
+
601
+ ---
602
+
603
+ ## Command Options
604
+
605
+ - `--env <staging|production>`: Specify deployment environment
606
+ - `--skip-tests`: Skip test phase (emergency fixes only)
607
+ - `--rollback`: Rollback to previous version
608
+ - `--canary`: Use canary release strategy
609
+ - `--dry-run`: Simulate deployment without executing
610
+
611
+ ---
612
+
613
+ ## Success Metrics
614
+
615
+ - ✅ Deployment frequency: Multiple times per day
616
+ - ✅ Lead time for changes: < 1 hour
617
+ - ✅ Change failure rate: < 15%
618
+ - ✅ Mean time to recovery (MTTR): < 1 hour
619
+ - ✅ Service availability: > 99.9%
620
+
621
+ ---
622
+
623
+ ## References
624
+
625
+ - Jez Humble & David Farley - *Continuous Delivery*
626
+ - Gene Kim - *The DevOps Handbook*
627
+ - Nicole Forsgren - *Accelerate*
628
+ - Martin Fowler - *Continuous Integration*