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 持续集成

目的快速输出交付物。

频繁地将代码集成到主干的优点

  1. 小功能尽快合并, 可以快速发现错误
  2. 避免大版本更新合并困难;

需要的能力

  1. 自动代码合并, 不同的环境到不同的分支;
  2. 自动构建
  3. 测试: 单页测试和一些规范的验证。

CD

Continuous delivery 持续交付

频繁地将软件的新版本, 交付给质量团队或者用户, 以供评审, 即快速进入测试环境验证;

Continuous Deployment 持续部署

目的是快速将交付物发布到生产环境中, 并验证新版本能否运行正常。

需要的能力

  1. 快速发布能力: 并行发布, 预推送等
  2. 快速验证能力:自动化实际业务测试能力
  3. 快速回退能力:通过备份、环境变量、软链接、重发或回退版本、切换流量等方式

一般简化流程

  1. 提交代码到功能功能分支
  2. 单元测试和代码评审或验证
  3. 合并dev分支
  4. 自动发布测试环境验证, 压力测试, 集成测试等
  5. 合并main分支
  6. 发布生产环境

语义化发布

简单理解就是通过 git commit 时标识信息来确认这次发布的类型,引导相应动作。

生成的版本号规则

  • 主版本号: 当你做了不兼容的 API 修改
  • 次版本号: 当你做了向下兼容的功能性新增
  • 修订号: 当你做了向下兼容的问题修正

语义

commit 附带的 Message 格式遵守一定规范, 保证每次提交格式一致且都是可以被解析的, 那么进行 Release 时, 只要统计一下距离上次 Release 所有的提交, 就分析出本次提交做了何种程度的改动, 并可以自动生成版本号, 自动生成 ChangeLog 等

Commit 所遵守的规范称为约定式提交(Conventional Commits)

语义化发布首先将 Commit 进行分类, 常用的分类(Type)有:

标识 说明
feat: 新功能, 增加次版本号
fix: BUG 修复, 增加修订号版本号
docs: 文档变更
style: 文字格式修改
refactor: 代码重构
perf: 性能改进, 增加修订号版本号
test: 测试代码
chore: 工具自动生成
最后更新于