CICD Solutions

市面上有很多 CICD 的工具和平台可供使用. 为了选择最适合我们的工具, 首先我们要了解 CICD 的本质是在做什么.

CICD 的具体流程通常是这样的:

  1. 从代码库拉取代码.

  2. 在虚拟机或容器的运行环境中, 对代码进行 构建, 测试, 部署. 这三个主要步骤可以拆分成更小的步骤, 也可以交换顺序, 例如在部署后继续进行测试.

CICD 系统:

  1. 提供各种各样的运行环境, 例如 Linux, Windows, MacOS. 其中 90% 是 Linux.

  2. 运行环境要能安全地与生产环境进行交互.

  3. 对于同一个流程, 要能将流程中的数据, 逻辑步骤进行参数化, 自动化.

  4. 能允许对许多小流程进行排列组合, 根据参数, 和条件进行编排.

业界有非常多 CICD 工具可供选择.

  • Jenkins

  • Bamboo

  • CircleCI

  • TravisCI

还有很多跟平台, 编程语言, 应用类型深度绑定的工具.

但是从内在逻辑上, 这些工具主要有两类:

  1. 开源软件, 允许你将这套软件安装到任何机器上. 例如 Jenkins. 这意味着你可以将 CICD 的服务器, 以及构建所用的机器放在你能管控的环境内, 比如你自己的机房中. 这也是 Jenkins 最大的优势.

  2. 云平台, 允许你将你在云平台上的账户和代码版本控制系统 例如 Git 相连. 然后再云平台上的服务器中进行构建. 例如 CircleCI. 这意味着你无需安装和管理构建服务器, 你只需要使用以及对其付费即可.

我个人非常喜欢三种:

  1. Jenkins, 常用于管理政策很严格的公司, 比如政府机构, 要求所有代码在政府机构的网络内部运行.

  2. CircleCI, 常用于开源软件和创业公司, 可以快速的直接使用.

  3. AWS Code Build, 常用于使用了 AWS, 同时管理政策很严格的公司.