虽然这两个产品都是做 CI/CD 用的,但是两个产品还有有异同的:
相同点:
- 都是通过 YAML 语法配置来实现 CI/CD 流水线的
- 都是在项目更目录下创建一个 yml 文件来实现对流水线的控制的
- CI/CD 运行的背后都是 Runner 组件来实现的
- 两者都是一体化平台内置的功能,不用安装配置第三方插件就能用
当然,也有不少不同点哈:
- GitHub Actions 通过“插件”机制来实现 CI/CD 的编写,在 marketplaces 中有别人发布的 actions,找到合适的直接使用即可;GitLab CI 需要自己根据流程来编写流水线,当然也可以引用一些已经内置的模版(涉及DevSecOps 的居多)。当然,从 16.0 开始,GitLab 也引入了 component & catalog 这样的功能来简化流水线的编写,提高复用性。
- GitLab CI 在流水线功能方便要比 GitHub Actions 多不少。GitLab CI 有 DAG(有向无环图)、合并结果、多项目等流水线类型,主要是针对不同团队规模、不同场景,此外还有流水线的一些审核和配置规则,这些是 GitHub Actions 不足的地方。
最后,其实信通院之前发布的中国DevOps现状报告里面写了,GitLab CI 的使用率是远远高于 GitHub Actions 的。原因大家都懂得,GitHub 有网络原因,也没法私有化部署。而 GitLab 可以私有化部署,直接一键式就能拉起一个实例,并且配置好 CI/CD 使用,这样是 GitLab CI 在国内使用率极高的一个原因。
|