CICD专题
CICD专题
云原生构建 Cloud Native Build, 腾讯云上主推, 自有实现 https://docs.cnb.cool/zh/
工具集
| 主流 | 简述 | 地址 |
|---|---|---|
| Jenkins | 老牌可靠 | https://www.jenkins.io |
| github-actions | 开源项目首推 | https://github.com |
| gitea-runner | 个人私有项目推荐 | https://gitea.com/gitea/act_runner |
| gitlab-runner | 企业私有项目推荐 | |
| gitea | 私有代码仓库, 很好用 | |
| gitlab | 私有代码仓库, 功能丰富 | |
| Argo | k8s环境发布工具 | |
| ansible | 老牌环境发布管理体系 |
CI
Continuous Integration 持续集成
目的快速输出交付物。
频繁地将代码集成到主干的优点
- 小功能尽快合并, 可以快速发现错误
- 避免大版本更新合并困难;
需要的能力
- 自动代码合并, 不同的环境到不同的分支;
- 自动构建
- 测试: 单页测试和一些规范的验证。
CD
Continuous delivery 持续交付
频繁地将软件的新版本, 交付给质量团队或者用户, 以供评审, 即快速进入测试环境验证;
Continuous Deployment 持续部署
目的是快速将交付物发布到生产环境中, 并验证新版本能否运行正常。
需要的能力
- 快速发布能力: 并行发布, 预推送等
- 快速验证能力:自动化实际业务测试能力
- 快速回退能力:通过备份、环境变量、软链接、重发或回退版本、切换流量等方式
一般简化流程
- 提交代码到功能功能分支
- 单元测试和代码评审或验证
- 合并dev分支
- 自动发布测试环境验证, 压力测试, 集成测试等
- 合并main分支
- 发布生产环境
语义化发布
简单理解就是通过 git commit 时标识信息来确认这次发布的类型,引导相应动作。
生成的版本号规则
- 主版本号: 当你做了不兼容的 API 修改
- 次版本号: 当你做了向下兼容的功能性新增
- 修订号: 当你做了向下兼容的问题修正
语义
commit 附带的 Message 格式遵守一定规范, 保证每次提交格式一致且都是可以被解析的, 那么进行 Release 时, 只要统计一下距离上次 Release 所有的提交, 就分析出本次提交做了何种程度的改动, 并可以自动生成版本号, 自动生成 ChangeLog 等
Commit 所遵守的规范称为约定式提交(Conventional Commits)
语义化发布首先将 Commit 进行分类, 常用的分类(Type)有:
| 标识 | 说明 |
|---|---|
| feat: | 新功能, 增加次版本号 |
| fix: | BUG 修复, 增加修订号版本号 |
| docs: | 文档变更 |
| style: | 文字格式修改 |
| refactor: | 代码重构 |
| perf: | 性能改进, 增加修订号版本号 |
| test: | 测试代码 |
| chore: | 工具自动生成 |
最后更新于