- 背景: 瀑布开发模式下分支开发,主干发布的分支管理下,软件的功能被拆分为不同的模块,交付给不同的人进行开发。只有到测试验证完成后,功能才会被集成起来。往往几个月开发下来,大量分支合并代码冲突和功能冲突集中爆发,团队只能疲于奔命,各种救火。
- 三个问题:下方问题的流水线触发仅仅指代被集成的分支
- 每一次代码提交,是否都会触发一次完整的流水线?
- 每次流水线是否触发自动化的测试环节?
- 如果流水线出现了问题,能否在 10 分钟内恢复?
持续集成 (Continuous Integration - CI) 的目标是频繁地将代码集成到主干,并快速验证其质量
- 触发(Trigger)
- 开发者
push
代码到特定分支
- 开发者
- 执行自动化任务
- 检出代码(Checkout):拉取最新的代码
- 安装依赖(Install Dependencies):使用缓存机制如(
actions/cache
)来加速npm install
或yarn install
- 代码规范检查(Lint & Format Check):运行 ESlint,Prettier 等工具,强制代码风格统一,提前发现低级错误。
- 单元测试与集成测试 (Unit & Integration Tests):运行 Jest, Vitest, Cypress 等测试框架。测试覆盖率报告可以作为 PR 合并的门禁条件之一。
- 构建项目(Build Project):执行
npm run build
,确保项目可以成功打包,没有编译错误
- 结果与反馈(Feedback):
- 成功:在 Pull Request 页面显示所有检查通过。允许 code reviewer 进行下一步审核
- 失败:立即阻塞 pr 的合并,并通过 github、slack 或者 teams 通知相关开发着,使其可以快速定位并修复问题。