GitLab CI vs. Jenkins: 差异与相似之处 [2023]

软件开发是一段旅程。它从规划、分析、设计、开发、测试、部署和维护开始。软件开发人员在这个过程中需要使用各种工具。

gitlab ci和jenkins是持续集成和交付(ci/cd)领域中最重要的工具之一。ci/cd是一套自动化软件开发的流程。

本文将介绍每个工具的定义、工作原理并比较它们的主要特点。

什么是gitlab ci?

gitlab持续集成和交付是一种devops工具,它自动化构建、测试和部署代码到生产环境的步骤。

gitlab ci有两个部分:持续集成(ci)和持续交付/部署(cd)。

持续集成负责自动化所有构建工作。该功能还通过代码审查提供反馈,并自动化代码的安全性和质量测试。最后,ci创建一个发布包以部署到生产环境。

gitlab ci的持续部署功能自动提供基础设施,并管理工单、基础设施变更和发布版本。cd提供了一个逐步部署代码的环境,并允许验证和监控所有的变更。该功能还允许用户在需要时回滚变更。

当将这两个功能结合起来时,您可以在最小的手动干预下自动化整个软件开发生命周期(sdlc)。

简而言之,gitlab ci用于:

  • 存储和管理代码
  • 自动化ci/cd流程
  • 跟踪问题
  • 保护代码安全
  • 协作

使用gitlab ci的优点

  • 加快速度:使用gitlab ci后,您不再需要手动进行构建、测试和部署代码等过程。
  • 提高代码质量:通过gitlab ci,您可以在代码进入生产环境之前捕捉到其中的错误和缺陷。
  • 安全:gitlab ci具有各种安全功能,例如漏洞扫描、密钥管理和代码扫描,以减少黑客攻击。
  • 灵活:您可以根据开发团队的需求自定义gitlab ci,并且可以与主要的语言和框架一起使用该工具。
  • 自动化测试:您不需要手动运行测试,因为您可以编写脚本来自动编写和执行测试。

什么是jenkins?

jenkins是一个可扩展的自动化服务器。这个开源工具帮助用户管理和构建持续集成和持续交付(ci/cd)流水线。jenkins是devops和软件工程师喜爱的工具,因为它有助于提高软件质量、可靠性和交付速度。

jenkins在流水线中运行一系列的“作业”或步骤。作业由多个按顺序执行的步骤组成。在jenkins中,一个步骤可以是构建、测试、部署或软件开发生命周期中的任何其他可以自动化的任务。

jenkins的用途可以总结如下:

  • gitlab ci runner: executes the jobs defined in the ci/cd configuration file. it can be installed on the same machine as the gitlab server or on a separate machine.
  • gitlab ci coordinator: handles job scheduling and dispatching to the runners.
  • gitlab ci database: stores information about ci/cd pipelines, jobs, and other related data.
  • gitlab ci web interface: provides a user-friendly interface for managing ci/cd pipelines and jobs.

configuration

jenkins uses a web-based interface or a configuration file called jenkinsfile to define the build pipeline and its stages. it allows for flexible and customizable configuration options.

gitlab ci uses a configuration file called .gitlab-ci.yml, which is stored in the repository. it follows a yaml syntax to define the ci/cd pipeline. gitlab ci also provides a visual editor in the web interface for easier configuration.

integration

jenkins has a wide range of integrations with other tools and platforms. it can be integrated with source code management systems like git, issue tracking systems, and various testing frameworks.

gitlab ci is tightly integrated with gitlab and its other features, such as repositories, issues, and merge requests. it also has integrations with various cloud providers and external services.

scalability

jenkins can be scaled horizontally by adding more jenkins workers/nodes to distribute the build workload. however, managing a large jenkins cluster can be complex.

gitlab ci can handle large-scale ci/cd pipelines with high concurrency out of the box. it supports distributed runners and allows for easy management of multiple runners.

community and support

jenkins has a large and active community with extensive documentation, plugins, and resources. it has been around for a long time and has a wide range of community support.

gitlab ci also has a growing community and provides comprehensive documentation. gitlab, as a whole, offers commercial support options for enterprises.

overall, both jenkins and gitlab ci are powerful ci/cd tools with their own strengths and features. the choice between them depends on the specific needs and preferences of the development team and organization.

  • gitlab ci/cd工具允许您管理构建。
  • gitlab runners执行所有ci任务。这个轻量级的进程可以在云端或您的计算机上运行。
  • ci/cd管道配置在.gitlab-ci.yml中定义。该文件定义了管道中所有的作业、阶段和步骤。

插件

jenkins拥有1800多个社区贡献的插件。这些插件涵盖了不同的领域,如构建、部署和自动化项目。用户可以自定义他们的ci/cd管道并扩展jenkins的功能。

开发者可以通过jenkins的详细文档来创建自定义插件。他们还可以构建插件并将其添加到jenkins的目录中。jenkins拥有一个庞大而活跃的社区,帮助构建插件。

gitlab ci允许您与外部服务进行连接/集成以增强功能。它的插件/扩展库相比jenkins要小,但正在不断增长。由于gitlab ci是gitlab的一部分,它带有许多内置功能。

用户可以使用.gitlab-ci.yml文件来自定义/配置他们的工作流程。您可以指定所有的作业、阶段和步骤。

管道

jenkins允许您使用声明性和脚本化管道语法。您可以在web ui或jenkinsfile中使用任何一种方法。后者是最常用的。您可以将其管道存储为存储源代码的存储库中的jenkinsfile。该平台配有一个内置的基于web的gui,您可以在其中监视和可视化执行。

gitlab ci有一个.gitlab-ci.yml文件来定义所有的管道。这个基于yml的配置文件存储在项目的根目录中。gitlab-ci.yml以其简单的语法和一系列命令和预定义关键字而闻名,涵盖了最常见的ci/cd任务。gitlab ci与其他gitlab功能集成,允许源代码管理、问题跟踪、代码审查、合并请求等等。

如何安装jenkins

在计算机上安装jenkins之前,您需要java runtime environment(jre)。根据您的操作系统从官方网站下载java。我将使用ubuntu演示安装过程。

如果您使用的是其他操作系统,请查看我们的文章“安装jenkins”并按照列出的步骤进行操作。

对于ubuntu,按照以下步骤进行操作:

步骤1:检查是否已安装jre。运行以下命令:

java -version

如果已安装,您将看到类似以下的输出:

我已安装了版本“17.0.6”,但您可能有更高的版本。

步骤2:使用以下命令将gpg密钥导入您的系统;

curl -fssl https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee 

  /usr/share/keyrings/jenkins-keyring.asc > /dev/null

步骤3:使用以下命令添加jenkins的软件仓库;

echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] 

  https://pkg.jenkins.io/debian-stable binary/ | sudo tee 

  /etc/apt/sources.list.d/jenkins.list > /dev/null

步骤4:使用以下命令更新您的系统:

sudo apt update

步骤5:使用以下命令安装jenkins:

sudo apt install jenkins -y

步骤6:使用以下命令检查jenkins是否已安装:

sudo systemctl status jenkins

如果已安装,您将看到类似于以下内容:

在键盘上按下ctrl+z退出并继续下一步。

步骤7:修改您的系统上的防火墙和jenkins。使用以下命令:

sudo ufw allow 8080

步骤8:检查状态

sudo ufw status

步骤9:如果在上一步中状态显示为“非活动”,请使用以下命令启用它:

sudo ufw enable

步骤10:在浏览器中键入以下内容以打开jenkins:

http://localhost:8080

步骤11:通过运行以下命令获取“管理员密码”:

sudo cat /var/lib/jenkins/secrets/initialadminpassword

步骤12:解锁jenkins

复制在步骤十中打开的“管理员密码”对话框中显示的密码,然后点击“继续”。

新窗口将提示您安装插件。由于目前不需要太多插件,您可以选择默认插件并进行下一步

步骤13:创建您的帐户,“保存并继续”。

步骤14:设置即时配置并开始使用jenkins

如何安装gitlab ci

gitlab ci是gitlab的一部分。要获取gitlab ci,您必须首先安装gitlab runner,该代理在将作业发送到gitlab之前运行所有作业。

我将使用ubuntu演示该过程。如果您有其他操作系统,请参阅官方文档。对于ubuntu,请按照以下步骤进行:

步骤1:更新并配置您的系统;

sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates tzdata perl

您可以配置一个电子邮件解决方案来发送更新,或跳过此步骤。

步骤2:添加gitlab软件包存储库

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash

步骤3:配置您的gitlab帐户。

有不同的选项进行gitlab托管。根据您的选择按照说明进行操作。

步骤4:在浏览器中浏览主机名并登录。在终端上键入此命令以获取密码;

/etc/gitlab/initial_root_password 

可选:设置通信首选项以接收来自gitlab的产品更新和新闻。

jenkins的限制

  • jenkins 在大型项目中设置起来可能会很复杂。
  • 如果配置不好,jenkins 可能会容易受到安全攻击。
  • 在使用 jenkins 时,扩展大型项目可能会很困难。
  • 当运行多个并发构建时,jenkins 可能会消耗大量资源。

gitlab ci 的限制

  • gitlab ci 在大型项目中可能会很复杂。
  • 依赖于 gitlab。
  • 扩展性对于大型项目来说是个问题。
  • 与 jenkins 相比,插件生态系统规模较小。

作者观点

gitlab ci 和 jenkins 都是软件开发生命周期中很棒的工具。如果我想要一个更成熟的平台和完全控制自定义,我会选择 jenkins。另一方面,如果我需要从 gitlab 的集成中受益,我会选择 gitlab ci,因为它的用户界面更好。

现在我们相信你可以区分 gitlab ci 和 jenkins 之间的区别了。尽管这两个工具都设计用于执行类似的功能,但它们在功能和实现方式上有所不同。选择其中一个将取决于你的项目性质、技能、喜好和偏好。

你现在可以查看这些 jenkins 托管平台。

类似文章