• 背景: 瀑布开发模式分支开发,主干发布的分支管理下,软件的功能被拆分为不同的模块,交付给不同的人进行开发。只有到测试验证完成后,功能才会被集成起来。往往几个月开发下来,大量分支合并代码冲突和功能冲突集中爆发,团队只能疲于奔命,各种救火。
  • 三个问题:下方问题的流水线触发仅仅指代被集成的分支
    1. 每一次代码提交,是否都会触发一次完整的流水线?
    2. 每次流水线是否触发自动化的测试环节?
    3. 如果流水线出现了问题,能否在 10 分钟内恢复?

持续集成 (Continuous Integration - CI) 的目标是频繁地将代码集成到主干,并快速验证其质量

  1. 触发(Trigger)
    • 开发者 push 代码到特定分支
  2. 执行自动化任务
    • 检出代码(Checkout):拉取最新的代码
    • 安装依赖(Install Dependencies):使用缓存机制如(actions/cache)来加速 npm installyarn install
    • 代码规范检查(Lint & Format Check):运行 ESlint,Prettier 等工具,强制代码风格统一,提前发现低级错误。
    • 单元测试与集成测试 (Unit & Integration Tests):运行 Jest, Vitest, Cypress 等测试框架。测试覆盖率报告可以作为 PR 合并的门禁条件之一。
    • 构建项目(Build Project):执行 npm run build,确保项目可以成功打包,没有编译错误
  3. 结果与反馈(Feedback):
    • 成功:在 Pull Request 页面显示所有检查通过。允许 code reviewer 进行下一步审核
    • 失败:立即阻塞 pr 的合并,并通过 github、slack 或者 teams 通知相关开发着,使其可以快速定位并修复问题。