如何重启 Jenkins?

2025年03月17日 | 阅读 9 分钟

在本文中,我们将了解 Jenkins 是什么,以及它如何改进我们的 DevOps 持续集成环境。

在这里,我们将学习 Jenkins 之前的状况、Jenkins 之前存在的问题、Jenkins 是什么,并比较与 Jenkins 相关的定义。

Jenkins 之前

假设我们是能够编写代码、将代码提交到代码仓库并进行单元测试的开发人员。理想情况下,我们正在运行单元测试,但提交到代码仓库的实际提交应该更稳定。我们作为开发人员可能分布在各地。在印度,我们在菲律宾有另一位开发人员,在英国有另一位开发人员,在北美有一个开发团队。因此,我们在不同的时区工作,不同的代码量会进入代码仓库,存在集成问题,我们遇到了一种我们称之为“开发”的情况。

以前,我们必须等到所有软件代码都构建和测试完毕后才能开始查找错误,这增加了我们项目中的问题数量。软件交付过程可能更快,而我们无法迭代我们的软件。

什么是 Jenkins?

Jenkins 是源于持续集成概念的产品,我们作为高级开发人员可能听说过,其中两位开发人员会紧挨着编写相同信息片段的代码;他们能够做的是不断开发他们的代码并测试他们的代码和测试他们的代码。

Jenkins 是一个持续集成工具,支持新创建代码的持续开发、测试和部署。

Jenkins 是一个产品,它允许我们为整个团队构建这种能力,以在源代码环境中一致地提交我们的代码。因此,有两种方法可以实现持续交付,一种是通过日常构建,另一种是通过持续交付。

我们可以通过更改构建配置的传统方式来查看持续交付。

什么是持续集成?

持续集成的概念是,作为开发人员,我们可以从仓库拉取我们正在处理的代码,然后,我们将能够。随时将我们正在处理的代码提交到持续集成服务器。

持续集成服务器旨在验证和完成分析器可能进行的任何评估。

如果在持续集成服务器上测试未通过,则该代码会被退回给开发人员,开发人员可以进行修改。它还允许开发人员做几件事。它允许开发人员不中断构建,而我们都不希望中断正在进行的构建。但它允许开发人员仅在本地计算机上运行一些测试。

如果我们有很多测试,那么将该支持推送到另一个环境(如持续集成服务器)可能需要一些时间。它提高了我们开发人员的效率。

如果出现了任何可能超出标准 CI 测试的代码错误,可能会有一些我们编写了冲突代码。然后,这些错误可以轻松地从分析器传递给开发人员。

进行此测试的目标是我们可以发布和部署,我们的客户可以更快地获得新代码,并且当他们获得代码时,它就可以正常工作。

How to Restart Jenkins

持续集成工具

持续集成工具的优势在于它们是开源的。

Bamboo

Bamboo 是一个持续集成工具,可以并行运行多个构建以加快编译速度。它具有连接到仓库的内置功能,并为虫子、专家等构建了任务。

Buildbot

Buildbot 是一个开源框架,用于自动化软件构建、测试和交付过程。它用 Python 编写,并支持跨多个平台进行作业的适当并行执行。

Apache Gump

Apache Gump 旨在构建和测试所有开源 Java 项目。它确保每个项目在 API 和功能级别上都兼容。

Travis CI

Travis CI 是一个托管的、分布式的持续集成服务,用于构建和测试托管在 GitHub 上的软件项目。它适用于各种规模的项目和团队,并支持 20 多种语言。

GitHub 是一个流行的存储代码和构建代码的地方,它是一项在线服务,最近被微软收购。如果我们将在 GitHub 中存储我们的项目,我们可以使用 Travis CI 的持续集成,这是一个专为托管项目设计的工具。

Jenkins

Jenkins 是一个用 Java 编写的开源自动化服务器。它通过持续集成自动化软件开发过程,并促进持续交付。

它也是我们项目整体自动化的核心工具。在使用 Jenkins 时,我们有时会遇到提及“Hudson”产品的文档。Hudson 是最终成为 Jenkins 的产品的早期版本,Oracle 收购了它;当收购发生时,Hudson 背后的团队担心 Oracle 会如何处理 Hudson。因此,他们创建了 Hudson 的一个硬分叉,并将其重命名为 Jenkins。

因此,我们正在添加新功能,使其成为我们 CI 环境的中心工具。

Jenkins 的功能

Jenkins 提供了几种不同的功能。因此,Jenkins 的核心功能围绕简单的安装、简单的配置、插件、可扩展性和分布式处理。

让我们简要分析这五项功能。

1. 简单的安装

Jenkins 是一个独立的、基于 Java 的程序,可以在 Windows、Mac OS 和 Unix 系统上运行。我们甚至可以在 Linux 上运行它。

2. 简单的配置

它可以通过其 Web 界面轻松设置和配置,包括错误检查和内置帮助。

3. 插件

它在更新中心拥有大量插件,并与持续集成和 DevOps 工具链中的每个工具集成。

4. 可扩展性

Jenkins 可以通过其插件架构进行访问,并为它的功能提供了几乎无限的可能性。

5. 分布式

它可以跨多台机器分发工作,有助于跨不同平台实现更快的构建、测试和部署。

Jenkins 管道

在我们的电脑上进行开发和编码时,使用 Jenkins 流水线时首先要做的是提交我们的代码。作为开发人员,我们已经这样做了,至少是将我们的代码保存到 Git 服务器、svn 服务器或类似的托管服务中。

在这种情况下,我们将 Jenkins 用作提交代码的地方。

Jenkins 将为我们的代码创建一个构建;该构建过程的一部分是进行测试。

作为开发人员,他们已经习惯于运行单元测试并编写这些测试来验证我们的代码。但是,Jenkins 可能还有其他测试。例如,作为一个团队,我们可能有一套标准的测试来如何编写我们的代码,以便每个团队成员都能理解所编写的代码。这些测试也可以包含在 Jenkins 环境中的测试系统中。

假设所有评估都已完成,我们就可以将所有内容打包到一个准备好部署的环境中。

最终,我们就可以部署或交付我们的代码到生产环境了。

Jenkins 将成为帮助我们进行服务器环境以将我们的代码部署到创意环境的工具。结果是,我们可以快速地从开发人员转移到生产代码。

因此,这个过程可以自动化,而不是依赖人们来测试我们的代码或进行日常构建。我们只需要关注我们的代码,并不断审查这个测试和发布过程。

Jenkins 架构

Jenkins 内部的架构允许我们有效地实施持续交付 DevOps 环境。

服务器架构分为两个部分。我们有代码在左侧部分,开发人员正在进行并提交该代码到源代码存储库。

此后,Jenkins 将成为我们的持续集成服务器,然后它将拉取任何提交到源代码存储库的代码并对其运行测试。它将使用构建服务器,例如 Maven,来构建代码,并且在我们 Jenkins 管理的每个阶段,都有持续的测试。

例如,如果构建失败,该反馈将被返回给开发人员,以便他们可以修改他们的代码,从而使构建环境能够成功运行。

最后一个阶段是执行特定的测试脚本,这些脚本可以用 Selenium 编写。值得一提的是,Maven 和 Selenium 是 Jenkins 环境的插件,Maven 和 Selenium 是扩展 Jenkins 环境的两个流行示例。

再次经历整个过程作为一个自动化过程的目标是尽快生成我们的代码,使其完全经过测试且没有错误。因此,引用有关 Jenkins 环境的一个信息片段很重要,如果我们有不同的代码构建需要管理和分发。因此,这将要求我们需要执行多个构建。

Jenkins 不允许在单个服务器上执行多个文件和工作,我们需要多个服务器环境来运行 Jenkins 的不同版本才能实现这一点。

我们如何分析 Jenkins 内部的主从架构?

Jenkins 主从架构

上面的图显示了 Jenkins 主从架构的概述。远程源代码存储库在左侧,可以是 GitHub、公司内部服务、新的 Azure DevOps 代码存储库或我们的 Git 存储库。Jenkins 服务器充当左侧的主环境,然后该主环境可以推送到多个其他 Jenkins 从属环境。

How to Restart Jenkins

Jenkins 用例

让我们看一个成功使用 Jenkins 的公司的简短故事。这是一个用例场景。在过去的 10 到 15 年里,汽车行业发生了重大转变,制造商已从制造复杂的硬件转向制造软件。我们已经看到像特斯拉这样的公司,它们构建软件来管理他们的汽车。

我们看到像通用汽车这样的公司也发生了同样的事情,推出了他们的 OnStar 程序。

博世

博世最近将自己重新定位为一家科技公司,而不仅仅是一家汽车公司。这意味着汽车中的软件变得越来越复杂,需要更多的测试来为核心软件添加更多功能和改进。

博世 (Bosch)

因此,博世是一家明确遇到此问题的公司。他们的测试是他们希望通过采用持续集成和持续交付最佳实践来简化日益复杂的汽车软件,以吸引并超越最终用户的客户期望。因此,博世使用了 ClodBees,它是企业 Jenkins 环境。为了减少构建、部署和测试等手动步骤,博世引入了 CloudBees 的使用,它是企业 Jenkins 平台的一部分。

CloudBees

因此,CloudBees Jenkins 平台通过减少其构建、部署和测试过程中的手动步骤和重复工作,帮助他们满足了需求。Jenkins 平台通过自动化可靠性和透明度极大地提高了软件开发周期的效率,因为 Jenkins 成为了一个自我检查的环境。

结果是显著的。以前需要三天才能完成的构建过程,现在也需要三天,现在已经缩短到不到三个小时,这是一个巨大的进步。

大规模解决方案现在得到了关注,并得到了专业支持。

Jenkins 工具在整个工作中提供了清晰的可见性和透明度。

重启 Jenkins

在使用 Jenkins 时,用户可能需要在某个时候手动重启它。这会因为各种原因发生,例如排除故障或安装插件,Jenkins 提供了多种手动重启的方法。

通过 URL 重启 Jenkins

如果我们通过浏览器使用 Jenkins 仪表板,可以通过输入相关 URL 来重启 Jenkins,使用默认的重启 URL 会强制 Jenkins 重启,而不会等待任何构建完成。

使用安全重启选项可以在重启前完成所有当前正在运行的任务。新的作业将排队并等待直到重启完成。

这两个选项都需要通过单击“是”按钮来确认重启。

Jenkins URL 包括系统的 IP 地址和 Jenkins 运行的端口。如果我们正在我们的系统上登录 Jenkins 仪表板,我们将使用以下内容: