5月29日 00:51
持续集成、持续交付和持续部署有什么区别?
三者是递进关系:持续集成(CI)解决"代码能否合入"的问题——每次提交自动触发构建和测试,确保主分支始终可构建;持续交付(Continuous Delivery)解决"代码能否随时上线"的问题——在 CI 基础上自动化部署到预发布环境,但推送到生产环境需要人工审批门控;持续部署(Continuous Deployment)解决"代码能否自动上线"的问题——通过所有测试的变更直接部署到生产,无需人工干预。核心区别就在一个门:生产环境部署前是否有手动批准环节。选哪个取决于业务风险容忍度和测试覆盖成熟度。
追问
- CI 中"每次提交都触发构建"在高频提交时如何避免流水线排队?
- 持续交付中手动审批门控应该设在哪个环节?审批人需要关注什么?
- 从持续交付升级到持续部署,测试覆盖率要达到什么水平才安全?
- 蓝绿部署和金丝雀发布在持续部署中各起什么作用?
- CI/CD 流水线中安全扫描(SAST/DAST)应该放在哪个阶段?
写段代码
yaml# GitHub Actions:CI + 持续交付流水线 on: [push] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm ci && npm test deploy-staging: needs: test runs-on: ubuntu-latest environment: staging # 自动部署到预发布 steps: - run: npx deploy-to staging