在 Ubuntu 上安装 Jenkins

17 Mar 2025 | 5 分钟阅读

Jenkins 简介

Jenkins 是一个免费的自动化服务器。它有助于自动化与构建、部署、测试相关的软件开发元素,并提供持续交付和持续集成。它是一个基于服务器的系统,在 servlet 容器(包括 Apache Tomcat)中执行。

Jenkins 支持多个版本控制工具,包括 RTC、ClearCase、Perforce、Mercurial、Git、Subversion、CVS 和 AccuRev,并且可以运行基于 sbt、Apache Maven 和 Apache Ant 的项目以及任意 Windows 和 shell 脚本批处理命令。

Jenkins 简史

最初,Jenkins 项目被称为 Hudson,在与 Oracle 发生冲突后于 2011 年更名。Hudson,Oracle 的分支,在成为 Eclipse 基金会之前,继续集成了一段时间。Oracle 的 Hudson 现已不再管理,并于 2017 年 2 月被宣布过时。

Hudson 在 2007 年左右成为 Cruise Control 和许多免费构建服务器的更好替代品。2008 年 5 月,在 JavaOne 大会上,Jenkins 在开发者解决方案类别中获得了 Duke 奖。

  • 在 2010 年 11 月 Oracle 收购 Sun Microsystems 后,Hudson 社区出现了与基础设施相关的问题,该基础设施旨在涵盖有关 Oracle 控制和管理的问题。
  • Oracle 和项目贡献者之间进行了讨论。然而,存在几个协议领域;一个关键点是在 Oracle 指控名称的权利并于 2010 年 12 月使用了商标后的 **“Hudson”** 商标名称。
  • 2011 年 1 月 11 日,进行了投票,将项目名称从“Hudson”更改为“Jenkins”。
  • 该提案于 2011 年 1 月 29 日通过社区投票获得批准,从而产生了 Jenkins 项目。
  • Oracle 声明他们希望继续 Hudson 的开发,于 2011 年 2 月 1 日。因此,Hudson 和 Jenkins 继续作为两个不同的项目,两者都指控另一个是分支。
  • 2011 年,创建者 Kohsuke Kawaguchi 因其在 Jenkins/Hudson 项目上的表现获得了 O'Reilly 开源奖。
  • 2016 年 4 月 20 日,默认启用了 2.0 版本,并发布了 Pipeline 插件。
  • 该插件允许使用特定于领域的语言(基于 Apache Groovy)编写构建过程。
  • Jenkins 于 2017 年 2 月 8 日在 Eclipse 中取代了 Hudson。
  • 对于 Kubernetes,Jenkins X 软件程序于 2018 年 3 月被公开授予,并得到了多个云提供商的支持,例如 AWS EKS 等。

Jenkins 构建

可以通过多种方式遇到构建,包括

  • 由另一个构建要求
  • 在队列中的另一个构建构建完成后
  • 请求特定的构建 URL
  • 通过类似 cron 的方法进行调度
  • 一个 webhook,在版本控制系统中遇到推送的提交

Jenkins 插件

  • **Mailer:** 它允许我们为构建结果配置电子邮件消息。如果出现某些重要事件,例如,Jenkins 将为指定的收件人提供电子邮件
    • 不稳定的构建。
    • 构建失败。
    • 不稳定的构建,后来成功,表明存在回归。
    • 成功的构建,后来失败的构建,表明灾难已经结束。
  • **检查外部作业:** 这些增加了检查执行作业结果的能力。
  • **凭据:** 凭据允许在 Jenkins 中保存凭据。它们为其他插件提供了一个标准化的 API,用于保存和获取不同类型的凭据。
  • **SSH 代理:** 它允许维护在 SSH 上执行的 nix 机器上的代理。它包括一个新的代理启动机制。此启动机制将
    • 启动代理进程。
    • 当它具有兼容的 Java 版本时,通过 SFTP 复制 agent.jar。
    • 查找用户的默认 Java 版本。
    • 将 SSH 连接启动到命名主机,作为命名的用户名。
  • **在线说明:** 为了通过用户界面而不是命令提示符来调度和检查 shell 脚本的执行,Jenkins 可以有效地使用。
  • **Javadoc:** 它支持 Jenkins 的 Javadoc。此过程曾经是核心元素的一部分,尽管从 Jenkins 1.431 版本开始,它被分成了不同的插件。它启用了 **“发布 Javadoc”** 选项,因为发布后操作,命名要收集 Javadoc 的目录以及是否期望所有成功的构建都受到限制。

Jenkins 安全性

Jenkins 的安全性依赖于两个不同的因素:保护和访问控制,以防止外部威胁。支持防止外部威胁,包括恶意构建和 CSRF 攻击。可以以两种方式定制访问控制:用户授权和身份验证。

在 Ubuntu 上安装 Jenkins

在继续在服务器上安装软件包之前,必须更新我们的系统软件包管理器。使用以下命令确保您的系统软件包管理器是最新的

安装 Java

由于 Jenkins 是用 Java 编写的,因此第一步是安装 Java。使用以下命令安装 Java 8 OpenJDK 软件包

当前的 Jenkins 版本还不支持 Java 10 或更高版本。如果您在系统上安装了多个 java 版本,请确保 java 8 是默认的 java 版本。

要检查系统上的 java 版本,请使用以下命令

添加 Jenkins Debian 存储库

使用以下 **wget** 命令导入 Jenkins 存储库的 GPG(GnuPG - GNU 隐私保护)密钥

上述命令的输出应为 OK,这意味着密钥已成功导入,并且将考虑来自此存储库的包是可信的。

现在,使用以下命令将 Jenkins 存储库添加到系统中

安装 Jenkins

启用 Jenkins 存储库并添加密钥和源后,更新 apt 软件包列表

现在,使用以下命令安装最新版本的 Jenkins

安装完成后,Jenkins 服务将自动启动。

我们可以借助以下命令进行验证

我们应该看到类似这样的内容

调整防火墙

如果您在受防火墙保护的 Ubuntu 远程服务器上安装 Jenkins,您将需要打开端口 **8080**。考虑使用 **UFW** 来管理您的防火墙;您可以使用以下命令打开端口

使用以下命令验证更改

输出将如下所示

Status: active

To               Action          From
--               ------          ----
OpenSSH          ALLOW          Anywhere
8080             ALLOW          Anywhere
OpenSSH (v6)     ALLOW          Anywhere (v6)
8080 (v6)        ALLOW          Anywhere (v6)

设置 Jenkins

要设置新的 Jenkins 安装,请打开浏览器,键入域名或 IP 地址,后跟端口 8080,_http://your_ip_or_domain:8080_,将显示类似于以下的屏幕(解锁 Jenkins 屏幕)

Installing Jenkins on Ubuntu

在终端中,键入以下 cat 命令以查看密码

从终端复制密码并将其粘贴到“管理员密码”字段中,然后单击继续。现在,屏幕显示安装建议的插件或选择特定插件的选项

Installing Jenkins on Ubuntu

安装插件后,是时候创建一个管理员帐户来登录 Jenkins 了

Installing Jenkins on Ubuntu

填写必填字段,然后单击保存并完成按钮。

Installing Jenkins on Ubuntu

我们已成功设置 Jenkins,现在 Jenkins 服务器已准备好使用。