Gitlab CI vs Jenkins

任何人都可以让我知道jenkins和其他CI如Gitlab-CI,drone.io与GIT分配的区别。 在一些研究中,我只能提出Gitlab社区版本不允许添加Jenkins,但是Gitlab企业版本可以。 还有其他的重大差异吗?

这是我的经验:

在我的工作中,我们使用gitlab eepipe理我们的仓库,并且运行了Jenkins服务器(1.6)。

在他们的基础上,他们几乎是一样的。 他们将在服务器/泊坞窗图像上运行一些脚本。

TL; DR;

  • jenkins更容易使用/学习,但有成为一个插件地狱的风险
  • jenkins有一个graphics用户界面(这可以是首选,如果必须由其他人可以访问/维护)
  • 与GitLab的集成比用Gitlab-ciless
  • jenkins可以分解你的回购

大多数CI服务器是非常简单的( concourse.ci , gitlab-ci , circle-ci , travis-ci , drone.io , gocd和你还有什么)。 它们允许你从yaml文件定义中执行shell / bat。 jenkins更具可插拔性,并带有用户界面。 根据您的需要,这可以是优点也可以是劣势。

jenkins是非常可configuration的,因为所有可用的插件。 这个缺点是你的CI服务器可以成为一个插件的意大利面条。

在我看来,在Jenkins中链接和编排工作要比通过Yaml(调用curl命令)简单得多(因为UI)。 除此之外,Jenkins支持插件,当你的服务器上没有可用的插件时,它们会安装某些二进制文件(不知道其他文件)。

现在( jenkins2也支持更多的“适当的ci”与Jenkinsfile和默认的来自jenkins的pipe道插件2),但是与gitlab ci相比,用于更less地耦合到存储库。

使用yaml文件来定义您的构buildpipe道(并在最后运行纯shell / bat)更清洁。

编辑:我忘了在这里提到的插件可用于jenkins,让您可视化的各种报告,如testing结果,覆盖面和其他静态分析仪。 当然,您可以随时编写或使用一个工具来为您做这件事,但Jenkins绝对是一个优点(特别是对那些倾向于重视这些报告的pipe理者而言)

EDIT2:最近我一直在用Gitlab-ci工作得越来越多。 在Gitlab,他们正在做一个非常棒的工作,让整个体验变得有趣。 我知道人们使用Jenkins,但是当你运行Gitlab并且可用时,开始使用Gitlab-ci真的很容易。 不会有像Gitlab-ci那样无缝集成的东西,尽pipe他们在第三方集成上花费了相当多的精力。

  • 他们的文档应该让你立即开始
  • 开始的门槛非常低
  • 维护很简单(无插件)
  • 缩放跑步者很简单
  • CI完全是您的存储库的一部分
  • jenkins的工作/意见可能会变得混乱

在写作的时候有一些特殊之处

  • 只支持单个文件,但即将解决

我同意Rik的大部分笔记,但是我认为哪一个更简单是相反的 :GitLab被certificate是一个很棒的工具。

大部分的function来自于自包含,并且在同一个浏览器标签下将所有内容集成到同一个产品中:从版本库浏览器,发行板或构build历史到部署工具和监控 。

我现在正在使用它来自动化和testing一个应用程序在不同的Linux发行版上的安装方式,并且快速地configuration (尝试在Firefox上打开一个复杂的Jenkins作业configuration,并等待无响应的脚本出现,轻量级编辑.gitlab-ci.yml )。 花在configuration/缩放奴隶上的时间要less得多,这要归功于跑步者的二进制文件 。 再加上在GitLab.com你得到相当体面和免费的共享跑步者的事实。

Jenkins在成为GitLab CI的高级用户几个星期后感觉手册更多了,比如每个分支复制作业,安装插件来完成SCP上传等简单工作。 我今天所遇到的唯一的使用案例就是涉及多个存储库的情况。 那还需要很好的弄清楚。

顺便说一句,我目前正在编写一个关于GitLab CI的系列文章,以演示如何使用它来configuration存储库CI基础结构并不难。 上周发布了第一篇介绍基础知识,优缺点以及与其他工具的不同之处: https : //solidgeargroup.com/gitlab_countinuous_integration_intro