@umacloud/knowledge 1.0.1
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.
- package/00-governance/governance-capabilities.md +557 -0
- package/00-governance/knowledge-map.md +39 -0
- package/00-governance/maintenance-policy.md +76 -0
- package/00-governance/review-checklist.md +81 -0
- package/README.md +13 -0
- package/ai/01-standards/agent-development-complete.md +691 -0
- package/ai/01-standards/llm-application-complete.md +488 -0
- package/ai/01-standards/mlops-complete.md +798 -0
- package/ai/01-standards/prompt-engineering-complete.md +646 -0
- package/ai/01-standards/rag-architecture-complete.md +649 -0
- package/ai/02-playbooks/llm-evaluation-playbook.md +847 -0
- package/ai/03-checklists/ai-project-checklist.md +215 -0
- package/ai/04-antipatterns/ai-antipatterns.md +661 -0
- package/ai/05-cases/case-rag-production.md +147 -0
- package/ai/06-glossary/ai-glossary.md +162 -0
- package/ai/agent-evaluation-benchmark.md +53 -0
- package/ai/ai-agent-memory-context-management.md +41 -0
- package/ai/ai-cost-capacity-optimization-playbook.md +42 -0
- package/ai/ai-data-security-and-compliance-playbook.md +37 -0
- package/ai/ai-domain-index-and-checklist.md +40 -0
- package/ai/ai-governance-maturity-model.md +50 -0
- package/ai/ai-model-selection-and-routing-strategy.md +47 -0
- package/ai/ai-observability-and-oncall-runbook.md +52 -0
- package/ai/ai-rag-engineering-playbook.md +42 -0
- package/ai/ai-red-team-and-safety-evaluation.md +42 -0
- package/ai/ai-release-readiness-and-rollback-gate.md +42 -0
- package/ai/llm-agent-engineering-deep-dive.md +57 -0
- package/ai/prompt-and-tool-guardrails.md +52 -0
- package/api/01-standards/enterprise-api-standards.md +198 -0
- package/api/01-standards/rest-api-design-guide.md +63 -0
- package/api/02-playbooks/api-pagination-playbook.md +93 -0
- package/api/02-playbooks/graphql-production-playbook.md +176 -0
- package/api/03-checklists/api-review-checklist.md +55 -0
- package/api/04-antipatterns/api-antipatterns.md +112 -0
- package/architecture/01-standards/api-gateway-patterns.md +496 -0
- package/architecture/01-standards/cloud-native-patterns.md +644 -0
- package/architecture/01-standards/distributed-systems-patterns.md +591 -0
- package/architecture/01-standards/event-driven-architecture.md +595 -0
- package/architecture/01-standards/microservices-patterns-complete.md +968 -0
- package/architecture/01-standards/microservices-patterns.md +495 -0
- package/architecture/01-standards/system-design-interview.md +664 -0
- package/architecture/02-playbooks/microservices-patterns-playbook.md +137 -0
- package/architecture/02-playbooks/migration-playbook.md +780 -0
- package/architecture/02-playbooks/system-design-playbook.md +779 -0
- package/architecture/03-checklists/architecture-decision-checklist.md +297 -0
- package/architecture/04-antipatterns/architecture-antipatterns.md +417 -0
- package/architecture/05-cases/case-netflix-microservices.md +413 -0
- package/architecture/06-glossary/architecture-glossary.md +164 -0
- package/architecture/adr-template-and-examples.md +38 -0
- package/architecture/api-gateway-deep-dive.md +1291 -0
- package/architecture/configuration-management.md +1162 -0
- package/architecture/distributed-transactions.md +1220 -0
- package/architecture/microservices-complete.md +735 -0
- package/architecture/resilience-and-disaster-patterns.md +37 -0
- package/architecture/service-governance.md +1198 -0
- package/architecture/system-architecture-deep-dive.md +37 -0
- package/backend/01-standards/analytics-and-growth.md +65 -0
- package/backend/01-standards/api-and-error-conventions.md +120 -0
- package/backend/01-standards/application-layering-and-packaging.md +160 -0
- package/backend/01-standards/auth-implementation.md +104 -0
- package/backend/01-standards/backend-framework-idioms.md +74 -0
- package/backend/01-standards/background-jobs-and-async.md +66 -0
- package/backend/01-standards/caching-strategies-complete.md +390 -0
- package/backend/01-standards/config-and-observability.md +77 -0
- package/backend/01-standards/data-modeling-and-persistence.md +94 -0
- package/backend/01-standards/django-complete.md +1765 -0
- package/backend/01-standards/email-and-notifications.md +64 -0
- package/backend/01-standards/fastapi-complete.md +925 -0
- package/backend/01-standards/file-upload-and-storage.md +66 -0
- package/backend/01-standards/graphql-api-complete.md +416 -0
- package/backend/01-standards/llm-application-standard.md +78 -0
- package/backend/01-standards/message-queue-patterns.md +379 -0
- package/backend/01-standards/microservices-and-distributed.md +78 -0
- package/backend/01-standards/nestjs-complete.md +2167 -0
- package/backend/01-standards/payment-integration.md +80 -0
- package/backend/01-standards/rate-limiting-complete.md +451 -0
- package/backend/01-standards/realtime-and-websocket.md +65 -0
- package/backend/01-standards/search-and-filtering.md +64 -0
- package/backend/01-standards/spring-boot-complete.md +445 -0
- package/backend/02-playbooks/api-design-playbook.md +718 -0
- package/backend/02-playbooks/email-send-playbook.md +130 -0
- package/backend/02-playbooks/file-upload-s3-playbook.md +153 -0
- package/backend/02-playbooks/typescript-enterprise-playbook.md +133 -0
- package/backend/02-playbooks/websocket-realtime-playbook.md +154 -0
- package/backend/03-checklists/api-launch-checklist.md +189 -0
- package/backend/04-antipatterns/backend-antipatterns.md +1051 -0
- package/blockchain/01-standards/blockchain-basics.md +557 -0
- package/blockchain/01-standards/smart-contract-development.md +1315 -0
- package/cicd/01-standards/deployment-and-delivery-standard.md +96 -0
- package/cicd/01-standards/github-actions-complete.md +473 -0
- package/cicd/01-standards/release-and-store-submission.md +75 -0
- package/cicd/02-playbooks/cicd-pipeline-playbook.md +144 -0
- package/cicd/02-playbooks/release-management-playbook.md +605 -0
- package/cicd/03-checklists/pipeline-security-checklist.md +168 -0
- package/cicd/04-antipatterns/cicd-antipatterns.md +589 -0
- package/cicd/05-cases/case-deployment-automation.md +221 -0
- package/cicd/05-cases/case-gitops-transformation.md +212 -0
- package/cicd/06-glossary/cicd-glossary.md +114 -0
- package/cicd/cicd-blueprint-deep-dive.md +38 -0
- package/cicd/release-readiness-gate.md +37 -0
- package/cloud-native/01-standards/container-security.md +741 -0
- package/cloud-native/01-standards/kubernetes-complete.md +812 -0
- package/cloud-native/02-playbooks/api-gateway-playbook.md +155 -0
- package/cloud-native/02-playbooks/gitops-with-argocd.md +760 -0
- package/cloud-native/02-playbooks/k8s-troubleshooting-playbook.md +1942 -0
- package/cloud-native/02-playbooks/message-queue-playbook.md +129 -0
- package/cloud-native/02-playbooks/multicloud-governance.md +726 -0
- package/cloud-native/02-playbooks/serverless-patterns.md +788 -0
- package/cloud-native/02-playbooks/service-mesh-playbook.md +612 -0
- package/cloud-native/02-playbooks/terraform-iac-playbook.md +143 -0
- package/cloud-native/03-checklists/container-security-checklist.md +431 -0
- package/cloud-native/03-checklists/k8s-production-readiness-checklist.md +460 -0
- package/cloud-native/04-antipatterns/container-antipatterns.md +660 -0
- package/cloud-native/04-antipatterns/k8s-antipatterns.md +743 -0
- package/cloud-native/05-cases/case-k8s-migration.md +478 -0
- package/cloud-native/05-cases/case-k8s-scaling.md +642 -0
- package/cloud-native/05-cases/case-k8s-security-incident.md +397 -0
- package/cloud-native/06-glossary/cloud-native-glossary.md +337 -0
- package/cross-platform/01-standards/cross-platform-frameworks.md +83 -0
- package/cross-platform/01-standards/platform-selection-and-architecture.md +77 -0
- package/data/01-standards/elasticsearch-complete.md +2098 -0
- package/data/01-standards/postgresql-complete.md +1613 -0
- package/data/01-standards/redis-complete.md +1527 -0
- package/data/02-playbooks/database-optimization-playbook.md +403 -0
- package/data/02-playbooks/elasticsearch-production-playbook.md +132 -0
- package/data/03-checklists/database-launch-checklist.md +187 -0
- package/data/04-antipatterns/database-antipatterns.md +873 -0
- package/data/05-cases/case-database-migration.md +310 -0
- package/data/06-glossary/database-glossary.md +440 -0
- package/data/data-governance-and-modeling-deep-dive.md +39 -0
- package/data-engineering/01-standards/airflow-complete.md +523 -0
- package/data-engineering/01-standards/kafka-complete.md +1521 -0
- package/data-engineering/02-playbooks/spark-etl-playbook.md +496 -0
- package/data-engineering/03-checklists/pipeline-launch-checklist.md +194 -0
- package/data-engineering/04-antipatterns/data-pipeline-antipatterns.md +684 -0
- package/data-engineering/05-cases/case-real-time-pipeline.md +355 -0
- package/data-engineering/06-glossary/data-engineering-glossary.md +429 -0
- package/database/01-standards/database-schema-standards.md +147 -0
- package/database/02-playbooks/postgresql-optimization-quick.md +52 -0
- package/database/02-playbooks/postgresql-performance-optimization.md +58 -0
- package/database/02-playbooks/postgresql-production-playbook.md +146 -0
- package/database/02-playbooks/redis-caching-playbook.md +117 -0
- package/database/03-checklists/database-review-checklist.md +50 -0
- package/database/04-antipatterns/database-antipatterns.md +112 -0
- package/design/01-standards/ui-design-system-complete.md +423 -0
- package/design/02-playbooks/design-handoff-playbook.md +254 -0
- package/design/02-playbooks/design-review-playbook.md +388 -0
- package/design/03-checklists/design-review-checklist.md +246 -0
- package/design/04-antipatterns/design-antipatterns.md +378 -0
- package/design/05-cases/case-design-system-adoption.md +328 -0
- package/design/06-glossary/design-glossary.md +329 -0
- package/design/ui-full-lifecycle-cross-platform-playbook.md +571 -0
- package/design/ux-system-deep-dive.md +38 -0
- package/design-systems/00-craft-rules.md +71 -0
- package/design-systems/aesthetic-families.md +43 -0
- package/design-systems/anti-ai-slop.md +162 -0
- package/design-systems/bold-geometric.md +120 -0
- package/design-systems/brutalist-bold.md +103 -0
- package/design-systems/editorial-clean.md +109 -0
- package/design-systems/glass-aurora.md +108 -0
- package/design-systems/modern-minimal.md +145 -0
- package/design-systems/premium-luxury.md +106 -0
- package/design-systems/product-type-design-map.md +48 -0
- package/design-systems/soft-warm.md +123 -0
- package/design-systems/tech-utility.md +113 -0
- package/desktop/01-standards/desktop-app-standard.md +72 -0
- package/desktop/01-standards/desktop-design.md +71 -0
- package/development/00-governance/document-template.md +41 -0
- package/development/01-standards/api-versioning-strategies.md +432 -0
- package/development/01-standards/authentication-patterns-complete.md +479 -0
- package/development/01-standards/css-architecture-complete.md +550 -0
- package/development/01-standards/database-migration-strategies.md +484 -0
- package/development/01-standards/elasticsearch-complete.md +347 -0
- package/development/01-standards/git-complete.md +371 -0
- package/development/01-standards/golang-complete.md +1565 -0
- package/development/01-standards/graphql-complete.md +298 -0
- package/development/01-standards/javascript-bundlers-complete.md +469 -0
- package/development/01-standards/javascript-typescript-complete.md +528 -0
- package/development/01-standards/jest-complete.md +275 -0
- package/development/01-standards/linux-complete.md +234 -0
- package/development/01-standards/logging-observability-complete.md +526 -0
- package/development/01-standards/microservices-communication.md +502 -0
- package/development/01-standards/mongodb-complete.md +406 -0
- package/development/01-standards/oauth2-complete.md +285 -0
- package/development/01-standards/performance-optimization-complete.md +289 -0
- package/development/01-standards/playwright-complete.md +247 -0
- package/development/01-standards/postgresql-complete.md +456 -0
- package/development/01-standards/pytest-complete.md +340 -0
- package/development/01-standards/python-async-programming.md +902 -0
- package/development/01-standards/python-complete.md +956 -0
- package/development/01-standards/python-decorators-complete.md +799 -0
- package/development/01-standards/python-design-patterns.md +2854 -0
- package/development/01-standards/python-packaging-distribution.md +420 -0
- package/development/01-standards/python-testing-strategies.md +607 -0
- package/development/01-standards/python-web-frameworks-comparison.md +471 -0
- package/development/01-standards/redis-complete.md +317 -0
- package/development/01-standards/rest-api-complete.md +316 -0
- package/development/01-standards/rust-complete.md +578 -0
- package/development/01-standards/typescript-advanced-types.md +1513 -0
- package/development/01-standards/web-security-complete.md +292 -0
- package/development/02-playbooks/api-design-playbook.md +810 -0
- package/development/02-playbooks/database-migration-playbook.md +580 -0
- package/development/02-playbooks/debugging-playbook.md +692 -0
- package/development/02-playbooks/feature-delivery-playbook.md +430 -0
- package/development/02-playbooks/incident-hotfix-playbook.md +387 -0
- package/development/02-playbooks/performance-optimization-playbook.md +531 -0
- package/development/02-playbooks/performance-tuning-playbook.md +652 -0
- package/development/02-playbooks/refactor-playbook.md +403 -0
- package/development/02-playbooks/release-playbook.md +469 -0
- package/development/03-checklists/architecture-review-checklist.md +168 -0
- package/development/03-checklists/data-migration-checklist.md +157 -0
- package/development/03-checklists/oncall-handover-checklist.md +173 -0
- package/development/03-checklists/pr-checklist.md +158 -0
- package/development/03-checklists/production-readiness-checklist.md +190 -0
- package/development/03-checklists/release-readiness-checklist.md +154 -0
- package/development/03-checklists/security-review-checklist.md +182 -0
- package/development/04-antipatterns/api-antipatterns.md +657 -0
- package/development/04-antipatterns/architecture-antipatterns.md +686 -0
- package/development/04-antipatterns/backend-antipatterns.md +648 -0
- package/development/04-antipatterns/cicd-antipatterns.md +540 -0
- package/development/04-antipatterns/code-smell-antipatterns.md +571 -0
- package/development/04-antipatterns/data-antipatterns.md +658 -0
- package/development/04-antipatterns/database-antipatterns.md +578 -0
- package/development/04-antipatterns/frontend-antipatterns.md +635 -0
- package/development/04-antipatterns/reliability-antipatterns.md +700 -0
- package/development/04-antipatterns/security-antipatterns.md +747 -0
- package/development/05-cases/case-api-version-migration.md +428 -0
- package/development/05-cases/case-authorization-hardening.md +383 -0
- package/development/05-cases/case-bluegreen-rollback.md +466 -0
- package/development/05-cases/case-cache-snowball-protection.md +485 -0
- package/development/05-cases/case-ci-cd-pipeline.md +544 -0
- package/development/05-cases/case-database-scaling.md +500 -0
- package/development/05-cases/case-db-hotspot-optimization.md +487 -0
- package/development/05-cases/case-incident-mttr-reduction.md +563 -0
- package/development/05-cases/case-microservice-migration.md +375 -0
- package/development/05-cases/case-performance-optimization.md +406 -0
- package/development/05-cases/case-security-incident-response.md +345 -0
- package/development/06-glossary/full-stack-glossary.md +166 -0
- package/development/09-maturity/quarterly-audit-template.md +35 -0
- package/development/11-ui-excellence/ui-aesthetic-system.md +41 -0
- package/development/11-ui-excellence/ui-engineering-excellence.md +435 -0
- package/development/12-scenarios/development-scenarios-guide.md +565 -0
- package/development/13-implementation-assets/implementation-toolkit.md +282 -0
- package/development/13-implementation-assets/knowledge-gates-execution.md +43 -0
- package/development/14-full-lifecycle/software-lifecycle-gates.md +511 -0
- package/development/15-lifecycle-templates/project-templates-collection.md +791 -0
- package/development/api-contract-and-versioning-guide.md +36 -0
- package/development/api-governance-complete.md +43 -0
- package/development/backend-engineering-complete.md +43 -0
- package/development/code-review-quality-complete.md +43 -0
- package/development/concurrency-reliability-complete.md +43 -0
- package/development/database-engineering-complete.md +43 -0
- package/development/engineering-effectiveness-complete.md +43 -0
- package/development/engineering-standards-deep-dive.md +38 -0
- package/development/frontend-engineering-complete.md +43 -0
- package/development/performance-capacity-complete.md +43 -0
- package/development/refactor-migration-complete.md +42 -0
- package/development/refactoring-and-techdebt-playbook.md +37 -0
- package/development/security-in-development-complete.md +43 -0
- package/devops/01-standards/cicd-pipeline-complete.md +262 -0
- package/devops/01-standards/docker-complete.md +1490 -0
- package/devops/01-standards/github-actions-complete.md +337 -0
- package/devops/01-standards/kubernetes-complete.md +638 -0
- package/devops/01-standards/terraform-complete.md +2117 -0
- package/devops/02-playbooks/docker-compose-playbook.md +233 -0
- package/devops/02-playbooks/docker-k8s-production-playbook.md +186 -0
- package/devops/02-playbooks/docker-production-playbook.md +952 -0
- package/edge-iot/01-standards/edge-iot-complete.md +473 -0
- package/experts/architect/api-design.md +178 -0
- package/experts/architect/methodology.md +124 -0
- package/experts/architect/security.md +75 -0
- package/experts/backend-lead/methodology.md +216 -0
- package/experts/devops/methodology.md +160 -0
- package/experts/frontend-lead/methodology.md +178 -0
- package/experts/product-manager/industry/ecommerce.md +43 -0
- package/experts/product-manager/industry/saas.md +40 -0
- package/experts/product-manager/methodology.md +97 -0
- package/experts/qa-lead/methodology.md +123 -0
- package/experts/qa-lead/test-strategy.md +128 -0
- package/experts/uiux-designer/methodology.md +125 -0
- package/frontend/01-standards/accessibility-complete.md +532 -0
- package/frontend/01-standards/accessibility-standard.md +74 -0
- package/frontend/01-standards/admin-dashboard-and-crud.md +72 -0
- package/frontend/01-standards/design-tokens-complete.md +444 -0
- package/frontend/01-standards/forms-and-validation.md +77 -0
- package/frontend/01-standards/frontend-architecture-and-layering.md +119 -0
- package/frontend/01-standards/i18n-and-localization.md +65 -0
- package/frontend/01-standards/nextjs-complete.md +451 -0
- package/frontend/01-standards/react-complete.md +713 -0
- package/frontend/01-standards/react-hooks-complete-guide.md +1100 -0
- package/frontend/01-standards/react-hooks-complete.md +1171 -0
- package/frontend/01-standards/seo-and-web-vitals.md +77 -0
- package/frontend/01-standards/state-management-complete.md +444 -0
- package/frontend/01-standards/vue-complete.md +499 -0
- package/frontend/01-standards/vue3-complete.md +2002 -0
- package/frontend/01-standards/web-framework-best-practices.md +64 -0
- package/frontend/01-standards/web-performance-complete.md +495 -0
- package/frontend/02-playbooks/accessibility-a11y-playbook.md +161 -0
- package/frontend/02-playbooks/frontend-performance-playbook.md +707 -0
- package/frontend/02-playbooks/i18n-internationalization-playbook.md +120 -0
- package/frontend/02-playbooks/performance-optimization-playbook.md +163 -0
- package/frontend/02-playbooks/react-nextjs-production-playbook.md +167 -0
- package/frontend/02-playbooks/react-state-management-playbook.md +173 -0
- package/frontend/03-checklists/component-quality-checklist.md +166 -0
- package/frontend/03-checklists/frontend-launch-checklist.md +299 -0
- package/frontend/04-antipatterns/frontend-antipatterns.md +886 -0
- package/frontend/05-cases/case-performance-optimization.md +274 -0
- package/harmony/01-standards/harmonyos-arkts-standard.md +75 -0
- package/harmony/01-standards/harmonyos-design.md +65 -0
- package/high-quality-engineering-playbook.md +54 -0
- package/incident/01-standards/incident-response-complete.md +303 -0
- package/incident/02-playbooks/chaos-engineering-playbook.md +883 -0
- package/incident/02-playbooks/postmortem-playbook.md +398 -0
- package/incident/03-checklists/incident-readiness-checklist.md +181 -0
- package/incident/04-antipatterns/incident-antipatterns.md +490 -0
- package/incident/05-cases/case-cascade-failure.md +176 -0
- package/incident/06-glossary/incident-glossary.md +114 -0
- package/incident/postmortem-and-response-deep-dive.md +39 -0
- package/industries/ecommerce/ecommerce-complete.md +631 -0
- package/industries/education/education-complete.md +555 -0
- package/industries/fintech/fintech-complete.md +501 -0
- package/industries/gaming/gaming-complete.md +587 -0
- package/industries/healthcare/healthcare-complete.md +452 -0
- package/low-code/01-standards/low-code-complete.md +944 -0
- package/miniprogram/01-standards/ai-common-mistakes.md +61 -0
- package/miniprogram/01-standards/miniprogram-custom-navbar-capsule.md +77 -0
- package/miniprogram/01-standards/miniprogram-design.md +61 -0
- package/miniprogram/01-standards/miniprogram-standard.md +81 -0
- package/mobile/01-standards/android-material-design.md +70 -0
- package/mobile/01-standards/flutter-complete.md +384 -0
- package/mobile/01-standards/ios-design-hig.md +78 -0
- package/mobile/01-standards/mobile-app-standard.md +85 -0
- package/mobile/01-standards/react-native-complete.md +352 -0
- package/mobile/02-playbooks/mobile-cross-platform-playbook.md +175 -0
- package/mobile/02-playbooks/mobile-performance.md +473 -0
- package/mobile/03-checklists/mobile-release-checklist.md +234 -0
- package/mobile/04-antipatterns/mobile-antipatterns.md +798 -0
- package/mobile/05-cases/case-app-performance.md +500 -0
- package/mobile/05-cases/case-app-startup-optimization.md +218 -0
- package/mobile/06-glossary/mobile-glossary.md +484 -0
- package/observability/01-standards/observability-standards.md +103 -0
- package/observability/02-playbooks/prometheus-grafana-playbook.md +135 -0
- package/observability/02-playbooks/structured-logging-playbook.md +73 -0
- package/observability/03-checklists/observability-checklist.md +54 -0
- package/observability/04-antipatterns/observability-antipatterns.md +106 -0
- package/operations/01-standards/prometheus-monitoring-complete.md +1578 -0
- package/operations/02-playbooks/capacity-planning-playbook.md +620 -0
- package/operations/03-checklists/production-launch-checklist.md +365 -0
- package/operations/04-antipatterns/operations-antipatterns.md +664 -0
- package/operations/05-cases/case-sre-practices.md +581 -0
- package/operations/06-glossary/operations-glossary.md +120 -0
- package/operations/aiops-anomaly-detection.md +758 -0
- package/operations/capacity-planning.md +1061 -0
- package/operations/chaos-engineering.md +659 -0
- package/operations/incident-command-system.md +38 -0
- package/operations/observability-complete.md +442 -0
- package/operations/slo-sli-playbook.md +517 -0
- package/operations/sre-operations-deep-dive.md +39 -0
- package/package.json +8 -0
- package/performance/01-standards/performance-and-scalability.md +80 -0
- package/performance/01-standards/performance-standards.md +156 -0
- package/performance/02-playbooks/query-optimization-playbook.md +103 -0
- package/performance/03-checklists/performance-checklist.md +56 -0
- package/performance/04-antipatterns/performance-antipatterns.md +146 -0
- package/product/01-standards/product-management-complete.md +285 -0
- package/product/02-playbooks/feature-launch-playbook.md +207 -0
- package/product/02-playbooks/user-research-playbook.md +532 -0
- package/product/03-checklists/feature-launch-checklist.md +275 -0
- package/product/04-antipatterns/product-antipatterns.md +355 -0
- package/product/05-cases/case-mvp-to-scale.md +384 -0
- package/product/06-glossary/product-glossary.md +462 -0
- package/product/feature-prioritization-framework.md +40 -0
- package/product/kpi-and-metric-tree.md +37 -0
- package/product/product-discovery-and-prd-deep-dive.md +41 -0
- package/quantum/01-standards/quantum-complete.md +1186 -0
- package/security/01-standards/api-security-complete.md +511 -0
- package/security/01-standards/container-runtime-security.md +574 -0
- package/security/01-standards/data-protection-gdpr.md +543 -0
- package/security/01-standards/owasp-top10-complete.md +1890 -0
- package/security/01-standards/secure-coding-baseline.md +90 -0
- package/security/01-standards/supply-chain-security.md +441 -0
- package/security/01-standards/web-security-checklist.md +108 -0
- package/security/01-standards/zero-trust-architecture.md +521 -0
- package/security/02-playbooks/auth-sso-playbook.md +166 -0
- package/security/02-playbooks/incident-response-security-playbook.md +588 -0
- package/security/02-playbooks/owasp-api-security-playbook.md +129 -0
- package/security/02-playbooks/payment-integration-playbook.md +119 -0
- package/security/02-playbooks/penetration-testing-playbook.md +517 -0
- package/security/03-checklists/security-audit-checklist.md +356 -0
- package/security/04-antipatterns/security-coding-antipatterns.md +580 -0
- package/security/05-cases/case-log4shell-incident.md +537 -0
- package/security/05-cases/case-major-breaches.md +468 -0
- package/security/06-glossary/security-glossary.md +212 -0
- package/security/compliance-automation.md +993 -0
- package/security/container-security.md +680 -0
- package/security/devsecops-complete.md +426 -0
- package/security/sast-dast-sca.md +775 -0
- package/security/secrets-management.md +594 -0
- package/security/security-architecture-deep-dive.md +37 -0
- package/security/threat-modeling-stride-playbook.md +40 -0
- package/seed-templates/auth-system.md +59 -0
- package/seed-templates/blog-content.md +94 -0
- package/seed-templates/dashboard.md +89 -0
- package/seed-templates/docs-site.md +73 -0
- package/seed-templates/e-commerce.md +50 -0
- package/seed-templates/saas-landing.md +92 -0
- package/seed-templates/settings-page.md +51 -0
- package/testing/01-standards/test-strategy-and-layering.md +83 -0
- package/testing/01-standards/testing-strategy-complete.md +422 -0
- package/testing/01-standards/unit-testing-best-practices.md +118 -0
- package/testing/02-playbooks/e2e-testing-playbook.md +988 -0
- package/testing/02-playbooks/testing-strategy-playbook.md +126 -0
- package/testing/03-checklists/test-strategy-checklist.md +208 -0
- package/testing/04-antipatterns/testing-antipatterns.md +718 -0
- package/testing/05-cases/case-testing-transformation.md +300 -0
- package/testing/06-glossary/testing-glossary.md +110 -0
- package/testing/risk-based-test-matrix.md +36 -0
- package/testing/testing-strategy-deep-dive.md +37 -0
|
@@ -0,0 +1,589 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: cicd-antipatterns
|
|
3
|
+
title: CI/CD 反模式 (CI/CD Anti-Patterns)
|
|
4
|
+
domain: cicd
|
|
5
|
+
category: 04-antipatterns
|
|
6
|
+
difficulty: intermediate
|
|
7
|
+
tags: [antipatterns, build, cicd, left, skipping, slow, tests, untreated]
|
|
8
|
+
quality_score: 70
|
|
9
|
+
last_updated: 2026-06-15
|
|
10
|
+
---
|
|
11
|
+
# CI/CD 反模式 (CI/CD Anti-Patterns)
|
|
12
|
+
|
|
13
|
+
## 概述
|
|
14
|
+
|
|
15
|
+
本文档收录 CI/CD 流水线中常见的 10 大反模式,每个反模式包含:问题描述、真实症状、根因分析、正确做法和检测方法。这些反模式直接影响团队交付速度、发布质量和系统安全性,是 DevOps 成熟度的核心阻碍。
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 反模式 1:构建太慢不治理 (Slow Build Left Untreated)
|
|
20
|
+
|
|
21
|
+
### 问题描述
|
|
22
|
+
|
|
23
|
+
CI 构建时间持续增长,从最初的 5 分钟逐渐膨胀到 30 分钟甚至更长,但团队视而不见,将其视为"正常代价"。
|
|
24
|
+
|
|
25
|
+
### 典型症状
|
|
26
|
+
|
|
27
|
+
- 开发者提交 PR 后去喝咖啡等构建
|
|
28
|
+
- 构建队列排长龙,紧急修复也要排队
|
|
29
|
+
- 开发者倾向于一次性提交大量变更(减少等待次数)
|
|
30
|
+
- "反正要等很久"导致提交频率下降
|
|
31
|
+
- 构建超时频繁发生,CI 平台资源利用率畸高
|
|
32
|
+
|
|
33
|
+
### 根因分析
|
|
34
|
+
|
|
35
|
+
- 测试套件随功能增长未做分层优化
|
|
36
|
+
- 构建过程重复安装依赖(无缓存策略)
|
|
37
|
+
- 运行了不必要的全量测试而非增量测试
|
|
38
|
+
- 构建环境资源不足(CPU/内存/IO 瓶颈)
|
|
39
|
+
- Docker 构建层未优化,每次全量重建镜像
|
|
40
|
+
|
|
41
|
+
### 正确做法
|
|
42
|
+
|
|
43
|
+
```yaml
|
|
44
|
+
# 分层测试策略示例
|
|
45
|
+
stages:
|
|
46
|
+
lint: # < 30s
|
|
47
|
+
- eslint, ruff, formatting checks
|
|
48
|
+
unit-test: # < 2min
|
|
49
|
+
- 仅运行受变更影响的单元测试(test-impact-analysis)
|
|
50
|
+
integration: # < 5min
|
|
51
|
+
- 仅在关键路径变更时触发
|
|
52
|
+
e2e: # < 10min
|
|
53
|
+
- 仅在 merge 到 main 前运行
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
- 设置构建时间 SLO(如 P95 < 10 分钟)并在 Dashboard 监控
|
|
57
|
+
- 引入构建缓存(依赖缓存、Docker layer cache、增量编译)
|
|
58
|
+
- 使用并行执行拆分测试(matrix build / test sharding)
|
|
59
|
+
- 定期审计构建步骤,移除冗余任务
|
|
60
|
+
|
|
61
|
+
### 检测方法
|
|
62
|
+
|
|
63
|
+
- 监控 CI 构建 P50/P95/P99 时间趋势
|
|
64
|
+
- 设置告警:单次构建 > 15 分钟触发 warning,> 30 分钟触发 critical
|
|
65
|
+
- 每月生成构建效率报告,标记退化最严重的 Pipeline
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 反模式 2:跳过测试 (Skipping Tests)
|
|
70
|
+
|
|
71
|
+
### 问题描述
|
|
72
|
+
|
|
73
|
+
开发者为了加快发布速度,使用 `[skip ci]`、`--no-verify` 或直接注释掉测试步骤,将未经验证的代码推入生产。
|
|
74
|
+
|
|
75
|
+
### 典型症状
|
|
76
|
+
|
|
77
|
+
- 提交信息频繁出现 `[skip ci]`、`[ci skip]`
|
|
78
|
+
- Git hook 中 `--no-verify` 使用率 > 10%
|
|
79
|
+
- 测试覆盖率逐月下降但无人关注
|
|
80
|
+
- 生产 Bug 率与跳过测试的频率正相关
|
|
81
|
+
- "先上线再补测试"成为常态
|
|
82
|
+
|
|
83
|
+
### 根因分析
|
|
84
|
+
|
|
85
|
+
- 测试套件本身不可靠(Flaky Tests),开发者失去信任
|
|
86
|
+
- 构建太慢(反模式 1 的连锁反应)
|
|
87
|
+
- 缺乏质量门禁,跳过测试没有后果
|
|
88
|
+
- 紧急发布流程被滥用
|
|
89
|
+
|
|
90
|
+
### 正确做法
|
|
91
|
+
|
|
92
|
+
- CI 配置中硬编码最低覆盖率门禁(如 coverage >= 80%)
|
|
93
|
+
- 禁止在 main/release 分支使用 `[skip ci]`
|
|
94
|
+
- 记录每次跳过测试的理由并审计
|
|
95
|
+
- 紧急发布流程必须有回顾(Post-Release Review)
|
|
96
|
+
|
|
97
|
+
```yaml
|
|
98
|
+
# GitHub Actions 禁止跳过关键检查
|
|
99
|
+
jobs:
|
|
100
|
+
quality-gate:
|
|
101
|
+
if: always() # 即使其他 job 被跳过也运行
|
|
102
|
+
steps:
|
|
103
|
+
- name: Enforce minimum coverage
|
|
104
|
+
run: |
|
|
105
|
+
if [ "$COVERAGE" -lt 80 ]; then
|
|
106
|
+
echo "Coverage $COVERAGE% < 80% threshold"
|
|
107
|
+
exit 1
|
|
108
|
+
fi
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### 检测方法
|
|
112
|
+
|
|
113
|
+
- 审计 `[skip ci]` 提交频率,按团队/个人统计
|
|
114
|
+
- 监控测试覆盖率趋势(周级别)
|
|
115
|
+
- 关联生产事故与跳过测试的提交
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 反模式 3:手动部署 (Manual Deployment)
|
|
120
|
+
|
|
121
|
+
### 问题描述
|
|
122
|
+
|
|
123
|
+
部署过程依赖人工执行脚本、手动操作控制台或 SSH 到服务器执行命令,没有标准化的自动部署流程。
|
|
124
|
+
|
|
125
|
+
### 典型症状
|
|
126
|
+
|
|
127
|
+
- 部署文档长达数十步,每次部署都要照着文档操作
|
|
128
|
+
- 只有特定的"部署专家"能完成部署
|
|
129
|
+
- 部署时间不固定,周五下午也会部署
|
|
130
|
+
- 部署失败后回滚需要更长时间
|
|
131
|
+
- 同一版本在不同环境部署结果不一致
|
|
132
|
+
|
|
133
|
+
### 根因分析
|
|
134
|
+
|
|
135
|
+
- 历史遗留系统缺乏自动化基础设施
|
|
136
|
+
- 团队对 IaC 工具(Terraform、Ansible)掌握不足
|
|
137
|
+
- 过度依赖"专家经验"而非流程编码
|
|
138
|
+
- 管理层不愿投入自动化建设成本
|
|
139
|
+
|
|
140
|
+
### 正确做法
|
|
141
|
+
|
|
142
|
+
- 所有部署操作必须通过 Pipeline 触发,禁止直接 SSH
|
|
143
|
+
- 使用 GitOps 模式:合并到部署分支即触发自动部署
|
|
144
|
+
- 部署脚本纳入版本控制,与应用代码一起 Review
|
|
145
|
+
- 建立部署窗口制度(如:仅工作日 10:00-16:00)
|
|
146
|
+
|
|
147
|
+
```yaml
|
|
148
|
+
# GitOps 部署流程
|
|
149
|
+
deploy-production:
|
|
150
|
+
only:
|
|
151
|
+
- main
|
|
152
|
+
when: manual # 需要人工点击确认,但执行过程全自动
|
|
153
|
+
script:
|
|
154
|
+
- kubectl apply -f k8s/
|
|
155
|
+
- kubectl rollout status deployment/app --timeout=300s
|
|
156
|
+
environment:
|
|
157
|
+
name: production
|
|
158
|
+
url: https://app.example.com
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### 检测方法
|
|
162
|
+
|
|
163
|
+
- 审计服务器 SSH 登录日志,标记手动操作
|
|
164
|
+
- 统计每次部署耗时和步骤数
|
|
165
|
+
- 检查部署是否具有可重复性(同一版本多次部署结果一致)
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## 反模式 4:密钥明文存储 (Plaintext Secrets)
|
|
170
|
+
|
|
171
|
+
### 问题描述
|
|
172
|
+
|
|
173
|
+
数据库密码、API Key、Token 等敏感信息以明文形式写在代码、配置文件或 CI 变量中,缺乏加密和权限管理。
|
|
174
|
+
|
|
175
|
+
### 典型症状
|
|
176
|
+
|
|
177
|
+
- `.env` 文件被提交到 Git 仓库
|
|
178
|
+
- CI/CD 日志中打印出敏感信息
|
|
179
|
+
- 所有团队成员都能看到生产环境密钥
|
|
180
|
+
- 密钥从未轮换(创建后数年不变)
|
|
181
|
+
- 离职员工仍持有有效凭据
|
|
182
|
+
|
|
183
|
+
### 根因分析
|
|
184
|
+
|
|
185
|
+
- 缺乏密钥管理工具和流程
|
|
186
|
+
- 开发环境与生产环境密钥管理不分离
|
|
187
|
+
- CI 平台的 Secret 管理功能未被使用
|
|
188
|
+
- 安全意识培训不到位
|
|
189
|
+
|
|
190
|
+
### 正确做法
|
|
191
|
+
|
|
192
|
+
- 使用专用密钥管理服务(Vault、AWS Secrets Manager、Azure Key Vault)
|
|
193
|
+
- CI 中使用平台原生 Secret 功能,禁止明文环境变量
|
|
194
|
+
- 实施密钥自动轮换策略(90 天强制轮换)
|
|
195
|
+
- `.gitignore` 必须包含 `.env`、`*.pem`、`*.key` 等敏感文件
|
|
196
|
+
- 启用 Git 仓库的 Secret Scanning(GitHub Advanced Security / GitLab Secret Detection)
|
|
197
|
+
|
|
198
|
+
```yaml
|
|
199
|
+
# GitHub Actions Secret 最佳实践
|
|
200
|
+
steps:
|
|
201
|
+
- name: Deploy
|
|
202
|
+
env:
|
|
203
|
+
DB_PASSWORD: ${{ secrets.DB_PASSWORD }} # 从 Secret Store 注入
|
|
204
|
+
run: |
|
|
205
|
+
# 永远不要 echo 密钥
|
|
206
|
+
# 使用 mask 防止意外泄露
|
|
207
|
+
echo "::add-mask::$DB_PASSWORD"
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### 检测方法
|
|
211
|
+
|
|
212
|
+
- 使用 `truffleHog`、`gitleaks` 扫描代码仓库历史
|
|
213
|
+
- CI 日志审计:正则匹配疑似密钥的字符串
|
|
214
|
+
- 定期审计 Secret Store 的访问日志和轮换状态
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## 反模式 5:无制品版本管理 (Unversioned Artifacts)
|
|
219
|
+
|
|
220
|
+
### 问题描述
|
|
221
|
+
|
|
222
|
+
构建产物(Docker 镜像、JAR 包、NPM 包等)没有明确的版本标识,使用 `latest` 标签或时间戳,无法追溯特定制品对应的源码提交。
|
|
223
|
+
|
|
224
|
+
### 典型症状
|
|
225
|
+
|
|
226
|
+
- Docker 镜像全部使用 `latest` 标签
|
|
227
|
+
- 无法确定生产环境运行的是哪个版本
|
|
228
|
+
- 回滚时不确定该回滚到哪个制品
|
|
229
|
+
- 不同环境运行不同版本但没人知道
|
|
230
|
+
- 构建产物被覆盖,无法复现历史版本
|
|
231
|
+
|
|
232
|
+
### 根因分析
|
|
233
|
+
|
|
234
|
+
- 缺乏版本策略(SemVer、CalVer)
|
|
235
|
+
- 构建流程未嵌入版本信息
|
|
236
|
+
- 制品仓库(Artifactory、Harbor)管理缺失
|
|
237
|
+
- 对"不可变制品"原则理解不足
|
|
238
|
+
|
|
239
|
+
### 正确做法
|
|
240
|
+
|
|
241
|
+
- 每个制品使用唯一标识:`{semver}-{git-sha-short}`
|
|
242
|
+
- Docker 镜像禁止使用 `latest` 标签用于部署
|
|
243
|
+
- 制品必须不可变:一旦发布,同一版本号的内容不可覆盖
|
|
244
|
+
- 制品元数据必须记录:Git commit、构建时间、构建者、依赖版本
|
|
245
|
+
|
|
246
|
+
```dockerfile
|
|
247
|
+
# 构建时注入版本信息
|
|
248
|
+
ARG VERSION=0.0.0
|
|
249
|
+
ARG GIT_SHA=unknown
|
|
250
|
+
LABEL version="${VERSION}" \
|
|
251
|
+
git.sha="${GIT_SHA}" \
|
|
252
|
+
build.date="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
```yaml
|
|
256
|
+
# CI 构建并推送带版本的镜像
|
|
257
|
+
build:
|
|
258
|
+
script:
|
|
259
|
+
- VERSION=$(cat VERSION)
|
|
260
|
+
- SHA=$(git rev-parse --short HEAD)
|
|
261
|
+
- docker build -t registry.example.com/app:${VERSION}-${SHA} .
|
|
262
|
+
- docker push registry.example.com/app:${VERSION}-${SHA}
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### 检测方法
|
|
266
|
+
|
|
267
|
+
- 审计制品仓库中 `latest` 标签的使用情况
|
|
268
|
+
- 检查是否能从任意制品追溯到对应的 Git commit
|
|
269
|
+
- 验证同一版本号的制品内容是否一致(checksum 对比)
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## 反模式 6:忽略安全扫描 (Ignoring Security Scans)
|
|
274
|
+
|
|
275
|
+
### 问题描述
|
|
276
|
+
|
|
277
|
+
Pipeline 中缺少安全扫描步骤,或安全扫描结果被忽略,漏洞发现后不处理或设为"可接受风险"永不修复。
|
|
278
|
+
|
|
279
|
+
### 典型症状
|
|
280
|
+
|
|
281
|
+
- 依赖漏洞报告数百个但无人处理
|
|
282
|
+
- SAST/DAST 工具产生大量误报后被禁用
|
|
283
|
+
- 安全扫描作为"可选步骤"或"informational only"
|
|
284
|
+
- CVE 修复周期超过 90 天
|
|
285
|
+
- 仅在发布前做一次安全检查
|
|
286
|
+
|
|
287
|
+
### 根因分析
|
|
288
|
+
|
|
289
|
+
- 安全扫描工具配置不当,误报率高导致信任缺失
|
|
290
|
+
- 安全团队与开发团队脱节,漏洞处理流程不清
|
|
291
|
+
- 缺乏漏洞优先级分级和 SLA
|
|
292
|
+
- 安全被视为"上线前一道关"而非持续过程
|
|
293
|
+
|
|
294
|
+
### 正确做法
|
|
295
|
+
|
|
296
|
+
- 安全扫描集成到 CI 的每次构建中(Shift Left)
|
|
297
|
+
- 按严重级别设置 SLA:Critical 24h / High 7d / Medium 30d
|
|
298
|
+
- 区分误报并持续调优扫描规则
|
|
299
|
+
- 设置安全门禁:Critical/High 漏洞阻断合并
|
|
300
|
+
|
|
301
|
+
```yaml
|
|
302
|
+
# 多层安全扫描
|
|
303
|
+
security:
|
|
304
|
+
stages:
|
|
305
|
+
- sca: # 依赖漏洞扫描 (Software Composition Analysis)
|
|
306
|
+
tool: trivy, snyk
|
|
307
|
+
block_on: critical, high
|
|
308
|
+
- sast: # 静态代码分析
|
|
309
|
+
tool: semgrep, codeql
|
|
310
|
+
block_on: critical
|
|
311
|
+
- container: # 容器镜像扫描
|
|
312
|
+
tool: trivy
|
|
313
|
+
block_on: critical, high
|
|
314
|
+
- dast: # 动态扫描(staging 环境)
|
|
315
|
+
tool: zap
|
|
316
|
+
schedule: nightly
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### 检测方法
|
|
320
|
+
|
|
321
|
+
- 统计安全扫描结果的处理率(已修复 / 总发现)
|
|
322
|
+
- 监控漏洞平均修复时间(MTTR by severity)
|
|
323
|
+
- 审计被标记为"可接受风险"的漏洞列表
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## 反模式 7:无环境一致性 (Environment Inconsistency)
|
|
328
|
+
|
|
329
|
+
### 问题描述
|
|
330
|
+
|
|
331
|
+
开发、测试、预发布和生产环境的配置存在显著差异,导致"在我机器上没问题"的经典问题频繁出现。
|
|
332
|
+
|
|
333
|
+
### 典型症状
|
|
334
|
+
|
|
335
|
+
- 代码在 staging 通过但在 production 失败
|
|
336
|
+
- 不同环境使用不同版本的中间件(数据库、Redis、MQ)
|
|
337
|
+
- 环境配置手动维护,无人能说清差异
|
|
338
|
+
- 新搭建一套环境需要数天时间
|
|
339
|
+
- 环境漂移(drift)随时间越来越严重
|
|
340
|
+
|
|
341
|
+
### 根因分析
|
|
342
|
+
|
|
343
|
+
- 缺乏 Infrastructure as Code 实践
|
|
344
|
+
- 环境配置未纳入版本控制
|
|
345
|
+
- 各环境由不同团队/不同时期搭建
|
|
346
|
+
- 环境差异检测工具缺失
|
|
347
|
+
|
|
348
|
+
### 正确做法
|
|
349
|
+
|
|
350
|
+
- 使用 IaC 工具(Terraform / Pulumi)管理所有环境
|
|
351
|
+
- 环境配置差异仅限于:实例数量、资源规格、密钥(通过变量抽象)
|
|
352
|
+
- 使用容器化确保运行时一致性
|
|
353
|
+
- 定期运行环境漂移检测
|
|
354
|
+
|
|
355
|
+
```hcl
|
|
356
|
+
# Terraform 多环境管理
|
|
357
|
+
module "app" {
|
|
358
|
+
source = "./modules/app"
|
|
359
|
+
|
|
360
|
+
environment = var.environment # dev / staging / prod
|
|
361
|
+
instance_count = var.instance_counts[var.environment] # 差异仅限资源规格
|
|
362
|
+
db_version = "15.4" # 所有环境使用相同版本
|
|
363
|
+
redis_version = "7.2" # 所有环境使用相同版本
|
|
364
|
+
}
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
### 检测方法
|
|
368
|
+
|
|
369
|
+
- 定期比较各环境的基础设施配置(terraform plan / drift detection)
|
|
370
|
+
- 监控各环境的中间件版本一致性
|
|
371
|
+
- 在 staging 运行与 production 相同的健康检查
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
## 反模式 8:无回滚机制 (No Rollback Mechanism)
|
|
376
|
+
|
|
377
|
+
### 问题描述
|
|
378
|
+
|
|
379
|
+
部署失败或出现严重 Bug 时,没有快速回滚到上一个稳定版本的能力,只能"向前修复"或手动恢复。
|
|
380
|
+
|
|
381
|
+
### 典型症状
|
|
382
|
+
|
|
383
|
+
- 发布后出问题,团队手忙脚乱地修 Hotfix
|
|
384
|
+
- 回滚需要重新构建旧版本(耗时数十分钟)
|
|
385
|
+
- 数据库 Migration 不可逆,阻断回滚
|
|
386
|
+
- 回滚后出现数据不一致
|
|
387
|
+
- "我们从不回滚"成为团队信条
|
|
388
|
+
|
|
389
|
+
### 根因分析
|
|
390
|
+
|
|
391
|
+
- 部署策略仅支持"覆盖式"部署
|
|
392
|
+
- 数据库变更与应用部署耦合
|
|
393
|
+
- 历史制品未保留,无法快速回滚
|
|
394
|
+
- 缺乏回滚演练
|
|
395
|
+
|
|
396
|
+
### 正确做法
|
|
397
|
+
|
|
398
|
+
- 保留最近 N 个版本的制品,回滚时直接切换制品引用
|
|
399
|
+
- 数据库 Migration 必须可逆(每个 up 都有对应的 down)
|
|
400
|
+
- 使用 Blue-Green 或 Canary 部署策略
|
|
401
|
+
- 每季度进行回滚演练
|
|
402
|
+
|
|
403
|
+
```yaml
|
|
404
|
+
# Kubernetes 回滚能力
|
|
405
|
+
deploy:
|
|
406
|
+
script:
|
|
407
|
+
- kubectl set image deployment/app app=${IMAGE}:${VERSION}
|
|
408
|
+
- |
|
|
409
|
+
if ! kubectl rollout status deployment/app --timeout=300s; then
|
|
410
|
+
echo "Deployment failed, rolling back..."
|
|
411
|
+
kubectl rollout undo deployment/app
|
|
412
|
+
exit 1
|
|
413
|
+
fi
|
|
414
|
+
|
|
415
|
+
# 保留历史版本
|
|
416
|
+
rollback:
|
|
417
|
+
when: manual
|
|
418
|
+
script:
|
|
419
|
+
- kubectl rollout undo deployment/app --to-revision=${REVISION}
|
|
420
|
+
- kubectl rollout status deployment/app --timeout=300s
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
### 检测方法
|
|
424
|
+
|
|
425
|
+
- 测量回滚耗时(目标 < 5 分钟)
|
|
426
|
+
- 定期模拟回滚并验证业务正确性
|
|
427
|
+
- 审计数据库 Migration 是否都有 rollback 脚本
|
|
428
|
+
|
|
429
|
+
---
|
|
430
|
+
|
|
431
|
+
## 反模式 9:Flaky 测试不修 (Ignoring Flaky Tests)
|
|
432
|
+
|
|
433
|
+
### 问题描述
|
|
434
|
+
|
|
435
|
+
测试随机失败(Flaky Tests)但无人修复,团队通过重试策略掩盖问题,最终导致整个测试套件失去可信度。
|
|
436
|
+
|
|
437
|
+
### 典型症状
|
|
438
|
+
|
|
439
|
+
- CI 配置了 `retry: 3`,测试"偶尔"能过
|
|
440
|
+
- 团队成员看到失败测试习惯性点击"重跑"
|
|
441
|
+
- 测试失败后的第一反应是"应该是 Flaky"而不是检查代码
|
|
442
|
+
- 测试套件中有大量被 `@skip` / `@ignore` 的用例
|
|
443
|
+
- 真正的 Bug 被淹没在 Flaky 噪声中
|
|
444
|
+
|
|
445
|
+
### 根因分析
|
|
446
|
+
|
|
447
|
+
- 测试依赖外部服务(网络、第三方 API、数据库状态)
|
|
448
|
+
- 异步操作使用 `sleep` 等待而非正确的同步机制
|
|
449
|
+
- 测试之间存在隐式依赖(执行顺序敏感)
|
|
450
|
+
- 测试环境资源竞争(并发写同一端口/文件)
|
|
451
|
+
- 时区、日期相关的测试在特定时间点失败
|
|
452
|
+
|
|
453
|
+
### 正确做法
|
|
454
|
+
|
|
455
|
+
- 建立 Flaky Test 追踪看板,限制 Flaky 率 < 1%
|
|
456
|
+
- Flaky Test 标记后必须在 7 天内修复或删除
|
|
457
|
+
- 禁止使用 `sleep` 等待异步操作,使用 `waitFor`/`eventually` 等断言
|
|
458
|
+
- 测试隔离:每个测试用例独立的数据库/状态
|
|
459
|
+
|
|
460
|
+
```python
|
|
461
|
+
# 错误:使用 sleep 等待
|
|
462
|
+
def test_async_job():
|
|
463
|
+
trigger_job()
|
|
464
|
+
time.sleep(5) # 祈祷式编程
|
|
465
|
+
assert get_result() == "done"
|
|
466
|
+
|
|
467
|
+
# 正确:使用轮询等待
|
|
468
|
+
def test_async_job():
|
|
469
|
+
trigger_job()
|
|
470
|
+
result = wait_until(
|
|
471
|
+
lambda: get_result() == "done",
|
|
472
|
+
timeout=10,
|
|
473
|
+
interval=0.5,
|
|
474
|
+
)
|
|
475
|
+
assert result
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
### 检测方法
|
|
479
|
+
|
|
480
|
+
- 标记每个测试的通过率(过去 50 次运行中失败 > 2 次即为 Flaky)
|
|
481
|
+
- 监控 CI retry 次数趋势
|
|
482
|
+
- 统计因 Flaky Test 导致的重新运行成本(时间 + 计算资源)
|
|
483
|
+
|
|
484
|
+
---
|
|
485
|
+
|
|
486
|
+
## 反模式 10:过度复杂 Pipeline (Overcomplicated Pipeline)
|
|
487
|
+
|
|
488
|
+
### 问题描述
|
|
489
|
+
|
|
490
|
+
Pipeline 配置臃肿、层层嵌套、逻辑不清晰,新成员需要数天才能理解,任何修改都可能引发连锁问题。
|
|
491
|
+
|
|
492
|
+
### 典型症状
|
|
493
|
+
|
|
494
|
+
- CI 配置文件超过 500 行
|
|
495
|
+
- Pipeline 中有大量 `if/else` 条件判断
|
|
496
|
+
- 同一个 Pipeline 服务多个不同类型的项目
|
|
497
|
+
- 修改 Pipeline 本身需要 PR Review 但无人敢审
|
|
498
|
+
- Pipeline 故障排查需要"CI 专家"介入
|
|
499
|
+
- 存在多层 Pipeline 调用 Pipeline 的嵌套
|
|
500
|
+
|
|
501
|
+
### 根因分析
|
|
502
|
+
|
|
503
|
+
- Pipeline 随需求增长自然膨胀,缺乏定期重构
|
|
504
|
+
- 所有项目共用一套 Pipeline 模板,用条件分支处理差异
|
|
505
|
+
- 缺乏 Pipeline 的模块化设计能力
|
|
506
|
+
- 过度追求"一个 Pipeline 搞定所有"
|
|
507
|
+
|
|
508
|
+
### 正确做法
|
|
509
|
+
|
|
510
|
+
- Pipeline 配置不超过 200 行,超出则拆分为可复用模块
|
|
511
|
+
- 使用 Reusable Workflow / Composite Action / Template 抽象公共逻辑
|
|
512
|
+
- 每种项目类型(前端/后端/库)使用独立的 Pipeline 模板
|
|
513
|
+
- Pipeline 本身也要有测试(在非生产环境验证 Pipeline 变更)
|
|
514
|
+
|
|
515
|
+
```yaml
|
|
516
|
+
# GitHub Actions: 可复用工作流
|
|
517
|
+
# .github/workflows/reusable-build.yml
|
|
518
|
+
name: Reusable Build
|
|
519
|
+
on:
|
|
520
|
+
workflow_call:
|
|
521
|
+
inputs:
|
|
522
|
+
node-version:
|
|
523
|
+
type: string
|
|
524
|
+
default: '20'
|
|
525
|
+
secrets:
|
|
526
|
+
npm-token:
|
|
527
|
+
required: true
|
|
528
|
+
|
|
529
|
+
jobs:
|
|
530
|
+
build:
|
|
531
|
+
runs-on: ubuntu-latest
|
|
532
|
+
steps:
|
|
533
|
+
- uses: actions/checkout@v4
|
|
534
|
+
- uses: actions/setup-node@v4
|
|
535
|
+
with:
|
|
536
|
+
node-version: ${{ inputs.node-version }}
|
|
537
|
+
- run: npm ci
|
|
538
|
+
- run: npm test
|
|
539
|
+
- run: npm run build
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
```yaml
|
|
543
|
+
# 调用方:简洁清晰
|
|
544
|
+
name: CI
|
|
545
|
+
on: push
|
|
546
|
+
jobs:
|
|
547
|
+
build:
|
|
548
|
+
uses: ./.github/workflows/reusable-build.yml
|
|
549
|
+
with:
|
|
550
|
+
node-version: '20'
|
|
551
|
+
secrets:
|
|
552
|
+
npm-token: ${{ secrets.NPM_TOKEN }}
|
|
553
|
+
```
|
|
554
|
+
|
|
555
|
+
### 检测方法
|
|
556
|
+
|
|
557
|
+
- CI 配置文件行数监控(> 300 行发出 warning)
|
|
558
|
+
- Pipeline 执行耗时分布(步骤级别)识别冗余步骤
|
|
559
|
+
- 统计 Pipeline 故障中"配置错误"占比
|
|
560
|
+
|
|
561
|
+
---
|
|
562
|
+
|
|
563
|
+
## 反模式对照速查表
|
|
564
|
+
|
|
565
|
+
| # | 反模式 | 核心危害 | 关键指标 | 治理优先级 |
|
|
566
|
+
|---|--------|---------|---------|-----------|
|
|
567
|
+
| 1 | 构建太慢不治理 | 开发效率下降 | 构建 P95 时间 | P1 |
|
|
568
|
+
| 2 | 跳过测试 | 质量失控 | `[skip ci]` 频率 | P0 |
|
|
569
|
+
| 3 | 手动部署 | 人为错误、不可复现 | 部署手动步骤数 | P1 |
|
|
570
|
+
| 4 | 密钥明文 | 安全事故 | 明文密钥扫描结果 | P0 |
|
|
571
|
+
| 5 | 无制品版本 | 不可追溯 | `latest` 标签使用率 | P1 |
|
|
572
|
+
| 6 | 忽略安全扫描 | 漏洞累积 | 漏洞修复率/MTTR | P0 |
|
|
573
|
+
| 7 | 无环境一致性 | 发布不可靠 | 环境漂移检测结果 | P2 |
|
|
574
|
+
| 8 | 无回滚机制 | 故障恢复慢 | 回滚耗时 | P1 |
|
|
575
|
+
| 9 | Flaky 测试不修 | 测试信任崩塌 | Flaky 率 | P2 |
|
|
576
|
+
| 10 | 过度复杂 Pipeline | 维护成本高 | CI 配置行数 | P2 |
|
|
577
|
+
|
|
578
|
+
---
|
|
579
|
+
|
|
580
|
+
## Agent Checklist
|
|
581
|
+
|
|
582
|
+
- [ ] 确认所有 10 个反模式均已覆盖
|
|
583
|
+
- [ ] 每个反模式包含:问题描述、典型症状、根因分析、正确做法、检测方法
|
|
584
|
+
- [ ] 代码示例使用真实 CI/CD 配置语法(YAML/HCL/Python)
|
|
585
|
+
- [ ] 优先级分级合理(P0 = 安全/质量阻断,P1 = 效率瓶颈,P2 = 长期改进)
|
|
586
|
+
- [ ] 检测方法具备可操作性,可直接用于自动化审计
|
|
587
|
+
- [ ] 反模式之间的因果关系已说明(如反模式 1 导致反模式 2)
|
|
588
|
+
- [ ] 速查表包含所有反模式的核心信息
|
|
589
|
+
- [ ] 文件超过 200 行
|