持续集成-选型

持续集成-选型

代码的生命周期

  1. 产生需求
    涉及到需求管理
  2. 开发人员编码
    涉及到代码仓库, 多人协作等
  3. 代码测试
    这个步骤的测试一般只是简单的基础校验;
    如语法规范, 注释格式, 提交信息, 依赖验证, 单元测试等
  4. 打包
    产出交付物
  5. 测试环境验证
    功能测试,性能测试, 灰度测试等
  6. 生产环境部署
    可能会回滚

需要考虑的几个组件

  1. 代码仓库
  2. 代码编译
  3. 包管理
  4. 测试
  5. 部署管理

代码仓库

如果没有特殊需要, 一般也都是 git 管理了, git 的仓库可以考虑这几个

优点 缺点
github 不需要介绍 国内访问存在不确定性
gitee 就是国内访问质量好 缺点就是可信度不高
gogs 如果只是单纯的 git 仓库, 这个就行了,轻量简单。可以私有化部署 功能单一
gitlab 可以私有化部署, 企业集成度比较高, 功能丰富 太重, 集成了太多杂乱的组件, 复杂
gitea 个人是强烈推荐,既轻量,又功能丰富, 支持软件包管理, runner 等组件 没有明显感觉
onedev 最近刚发现,感觉很不错,国产项目,似乎可以平替gitlab 未知

CI

CI工具非常多, 但一般主要考虑这几款

产品 介绍
github-actions 如果代码是在 github 上,当然是首选了;
有一定免费额度可以用, 小项目足够了
gitlib-ci 如果代码是在 gitlib 上,当然也是首选了
gitea-runner 如果代码在 gitea 上也是首选, 基本兼容 github-actions 的语法和插件。
但是这个项目的问题就是太新了,gitea 1.19 才开始正式支持, 也就是才发布几个月。
目前来说, 勉强可以用, 但稍微特殊一点的功能就不大能支持;
个人其实不大看好未来发展,因为开发进度的人员数量似乎有些不足,现在的进度也慢。
jenkins 老牌集成工具, 我是实在不推荐使用了
drone 主力推荐, 轻量级,插件都是容器化方式,定制功能非常方便。
虽然是开源的, 但也需要注意一点商业许可问题,轻量使用是免费的
Woodpecker 因为 drone 的诡异的商业许可问题, 所以出现了开源平替。
基本兼容 drone, 推荐,个人非常看好

还有一些云厂商的, 比如阿里的云效等, 没用过,但如果深度使用他们平台的话,应该也是挺不错的。

CD

最早就是脚本推送重启了

然后就是 ansible 这一类集中管理工具

再然后就是 k8s 集群这类平台化容器管理方式

目前比较看好和推荐 Argo 来做 持续部署

包管理

以前有过的方式

  1. 交付 war,jar, tar.gz 等形式的包文件,找一个文件目录或ftp进行存放
  2. 研发推送到统一的包仓库,如 npm 仓库, yum 仓库, mavn 仓库,pipy 等等
  3. 提交一个 release 到 github 或 gitea 或 gitlib 中

推荐的方式
如果不是最终交付的成品, 如果依赖库这种, 建议就是语言自身的私服中和 git release 两种方式组合管理

如果是最终交付物, 还是推荐 git release 方式和 ftp 类进行管理

微信搜索IT运维小秋

Licensed under CC BY-NC-SA 4.0
转载或引用本文时请遵守许可协议,知会作者并注明出处
不得用于商业用途!
最后更新于 2023-03-17 00:00 UTC