首先,从今天开始,GitLab 社区版可以与 Jenkins 完全互操作。没问题。
在下文中,我就结合 Jenkins 和 GitLab CI 的成功经验给出一些反馈。我还将讨论您应该同时使用它们还是只使用其中一个,以及出于什么原因。
我希望这将为您提供有关您自己项目的高质量信息。
GitLab CI 和 Jenkins 的优势
GitLab CI
GitLab CI 自然地集成在 GitLab SCM 中。您可以使用gitlab-ci.yml 文件创建管道并通过图形界面对其进行操作。
这些作为代码的管道显然可以存储在代码库中,从而强制执行“一切皆为代码”的做法(访问、版本控制、再现性、可重用性等)。
GitLab CI 是一款出色的可视化管理工具:
- 团队的所有成员(包括非技术人员)都可以快速轻松地访问应用程序生命周期状态。
- 因此它可以用作发布管理的交互式和操作仪表板。
詹金斯
Jenkins 是一个很棒的构建工具。它的优势在于它的许多插件。特别是,我在使用 Jenkins 和其他 CI 或 CD 工具之间的接口插件方面非常幸运。这总是比重新开发(可能很糟糕)两个组件之间的对话界面更好的选择。
使用groovyscripts 也可以使用管道即代码。
同时使用 GitLab CI 和 Jenkins
一开始听起来可能有点多余,但是将 GitLab CI 和 Jenkins 结合起来非常强大。
- GitLab CI 编排(链、运行、监视器...)管道,并且可以受益于集成到 GitLab 的图形界面
- Jenkins 运行该作业并促进与第三方工具的对话。
这种设计的另一个好处是工具之间的耦合松散:
- 我们可以替换任何构建工厂组件,而无需重新设计整个 CI/CD 流程
- 我们可以拥有一个异构的构建环境,结合(可能多个)Jenkins、TeamCity 等等,并且仍然拥有一个监控工具。
权衡
当然,这种设计是要付出代价的:初始设置很麻烦,而且您需要对许多工具有最低限度的了解。
因此,我不推荐这样的设置,除非
- 您有许多第三方工具需要处理。这时 Jenkins 的众多插件就派上用场了。
- 您必须使用异构技术处理复杂的应用程序,每个应用程序都有不同的构建环境,并且仍然需要有一个统一的应用程序生命周期管理 UI。
如果你不属于这两种情况,你可能最好只使用其中一种,但不要同时使用。
如果我必须选择一个
GitLab CI 和 Jenkins 各有利弊。两者都是强大的工具。那么选择哪一个呢?
回答 1
选择您的团队(或身边的人)已经具备一定水平的
专业知识。
答案 2
如果您都是 CI 技术的大一新生,只需选择一个即可开始学习。
- 如果您正在使用 GitLab 并且精通一切即代码,那么选择 GitLab CI 完全合理。
- 如果您必须与许多其他 CI/CD 工具进行对话,或者绝对需要该 GUI 来构建您的工作,请选择 Jenkins。
那些正在使用 GitLab 但不确定他们是否会继续这样做的人仍然必须记住,选择 GitLab CI 将意味着丢弃所有 CI / CD 管道。
最后一句话是:由于 Jenkins 有很多插件,天平有点倾向于 Jenkins,但 GitLab CI 很有可能会很快填补这一空白。