Jenkins 简明教程

Jenkins - Quick Guide

Jenkins - Overview

Why Jenkins?

Jenkins 是一款允许 continuous integration 的软件。Jenkins 将安装在中心构建将执行的服务器上。以下流程图演示了 Jenkins 的一种非常简单的工作流。

why jenkins

除 Jenkins 之外,有时还会看到 Hudson 的关联。Hudson 是 Sun Microsystems 开发的一款非常流行的开源基于 Java 的持续集成工具,随后被 Oracle 收购。在 Oracle 收购 Sun 之后,从 Hudson 源代码中创建了一个分支,从而引入了 Jenkins。

What is Continuous Integration?

持续集成是一种开发实践,它要求开发人员定期将代码集成到共享存储库中。这个概念旨在消除构建生命周期中后期出现问题的难题。持续集成要求开发人员进行频繁构建。常见做法是,每当确认代码时,都应触发构建。

System Requirements

JDK

JDK 1.5 or above

Memory

2 GB RAM (recommended)

Disk Space

无最低要求。请注意,由于所有构建都将存储在 Jenkins 机器上,因此必须确保有足够的磁盘空间用于构建存储。

Operating System Version

Jenkins 可以安装在以下系统上:Windows、Ubuntu/Debian、Red Hat/Fedora/CentOS、Mac OS X、openSUSE、FReeBSD、OpenBSD、Gentoo。

Java Container

WAR 文件可以在任何支持 Servlet 2.4/JSP 2.0 或更高版本(例如 Tomcat 5)的容器中运行。

Jenkins - Installation

Download Jenkins

Jenkins 的官方网站是 Jenkins 。如果你单击给定的链接,则可以获取 Jenkins 官方网站的主页,如下所示。

download jenkins1

默认情况下,最新版本和长期支持版本可用于下载。过去的版本也可供下载。单击下载部分中的长期支持版本选项卡。

download jenkins2

单击链接“较旧但稳定的版本”以下载 Jenkins war 文件。

Starting Jenkins

打开命令提示符。从命令提示符中,浏览到存在 jenkins.war 文件的目录。运行以下命令。

D:\>Java –jar Jenkins.war

在运行该命令后,会运行各种任务,其中一项是由名为 winstone 的嵌入式 Web 服务器执行的 war 文件提取。

D:\>Java –jar Jenkins.war
Running from: D:\jenkins.war
Webroot: $user.home/ .jenkins
Sep 29, 2015 4:10:46 PM winstone.Logger logInternal
INFO: Beginning extraction from war file

如果处理完成后没有出现重大错误,那么命令提示符的输出中会出现以下行。

INFO: Jenkins is fully up and running

Accessing Jenkins

Jenkins 启动并运行后,可以在链接中访问 Jenkins: http://localhost:8080

该链接将显示 Jenkins 仪表板。

accessing jenkins

Jenkins – Tomcat Setup

Jenkins Tomcat 设置必须满足以下先决条件。

Step 1: Verifying Java Installation

要验证 Java 安装,请打开控制台并执行以下 java 命令。

OS

Task

Command

Windows

Open command console

>java –version

Linux

Open command terminal

$java –version

如果 Java 已在你的系统中正确安装,那么你应该获得以下某个输出,具体取决于你在哪个平台上工作。

OS

Output

Windows

Java 版本 “1.7.0_60”Java™ SE 运行时环境(内部版本 1.7.0_60-b19)Java Hotspot™ 64 位服务器 VM(内部版本 24.60-b09,混合模式)

Linux

java 版本 “1.7.0_25”打开 JDK 运行时环境 (rhel-2.3.10.4.el6_4-x86_64)Open JDK 64 位服务器 VM(内部版本 23.7-b01,混合模式)

在继续本教程之前,我们假设本教程的读者已在其系统中安装了 Java 1.7.0_60。

如果你没有 Java JDK,你可以从链接 Oracle 下载。

Step 2: Verifying Java Installation

将 JAVA_HOME 环境变量设置为指向 Java 在你的机器上安装到的基本目录位置。例如,

OS

Output

Windows

将环境变量 JAVA_HOME 设置为 C:\ProgramFiles\java\jdk1.7.0_60

Linux

export JAVA_HOME=/usr/local/java-current

将 Java 编译器位置的完整路径附加到系统路径。

OS

Output

Windows

将字符串 C:\Program Files\Java\jdk1.7.0_60\bin 追加到系统变量 PATH 的末尾。

Linux

export PATH=$PATH:$JAVA_HOME/bin/

如上所述,从命令提示符验证命令 java-version。

Step 3: Download Tomcat

tomcat 的官方网站是 Tomcat 。如果你单击给定的链接,你就可以获得 tomcat 官方网站的主页,如下所示。

download tomcat1

浏览链接 https://tomcat.apache.org/download-70.cgi 以获取 tomcat 下载内容。

download tomcat2

转到“二进制分发”部分。下载 32 位 Windows zip 文件。

然后解压已下载的 zip 文件的内容。

Step 4: Jenkins and Tomcat Setup

复制从上一节下载的 Jenkins.war 文件,然后将其复制到 tomcat 文件夹中的 webapps 文件夹。

现在打开命令提示符。在命令提示符中,浏览到 tomcat7 文件夹所在目录。浏览该文件夹中的 bin 目录,然后运行 start.bat 文件。

E:\Apps\tomcat7\bin>startup.bat

如果处理完成后没有出现重大错误,那么命令提示符的输出中会出现以下行。

INFO: Server startup in 1302 ms

打开浏览器,然后转到链接 − http://localhost:8080/jenkins 。Jenkins 将在 tomcat 上启动并运行。

jenkins and tomcat setup

Jenkins - Git Setup

对于本练习,您需要确保已从安装了 Jenkins 的机器上连接互联网。在 Jenkins 仪表板(主屏幕)中,单击左侧的管理 Jenkins 选项。

jenkins git setup

在下一个屏幕中,单击“管理插件”选项。

manage jenkins

在下一个屏幕中,单击“可用”选项卡。此选项卡将提供可下载的插件列表。在“筛选”选项卡中,键入“Git 插件”

available tab

随后将筛选列表。选中 Git 插件选项,然后单击按钮“不重启安装”

git plugin

然后将开始安装,并且屏幕将刷新以显示下载状态。

installing plugins upgrades

所有安装完成后,使用浏览器中的以下命令 restart Jenkins。 http://localhost:8080/jenkins/restart

Jenkins 重新启动后,在配置作业时 Git 将可用作一个选项。要验证,单击 Jenkins 菜单选项中的新建项。然后为作业输入名称,在以下情况下,输入的名称为“Demo”。选择“自由风格项目”作为项目类型。单击确定按钮。

new item jenkins

在下一个屏幕中,如果您浏览到源代码管理部分,您现在将会看到“Git”作为一项选项。

demo config jenkins

Jenkins – Maven Setup

Step 1: Downloading and Setting Up Maven

maven 的官方网站为 Apache Maven 。如果单击给定的链接,您可以按如下所示获取 maven 官方网站的主页。

maven setup

在浏览该网站时,转到文件部分,然后下载二进制文件 .zip 文件的链接。

maven download

下载文件后,将文件解压到相关的应用程序文件夹。为此,maven 文件将放入 E:\Apps\apache-maven-3.3.3。

Step 2: Setting up Jenkins and Maven

在 Jenkins 仪表板(主屏幕)中,单击左侧菜单中的管理 Jenkins。

setting maven jenkins

然后,单击右侧的“配置系统”。

manage jenkins1
manage jenkins2

在配置系统屏幕中,向下滚动直到看到 Maven 部分,然后单击“添加 Maven”按钮。

add maven

取消选中“自动安装”选项。

添加设置和 MAVEN_HOME 位置的任意名称。

然后,单击屏幕末尾的“保存”按钮。

configure maven

现在,您可以使用“Maven 项目”选项创建一个作业。在 Jenkins 仪表板上,单击新建项选项。

jenkins dashboard1
jenkins dashboard2

Jenkins - Configuration

您可能在之前的练习中看到过我们不得不在 Jenkins 内配置选项的几次。下面显示了 Jenkins 中的各种配置选项。

因此,可以通过单击左侧菜单侧的“管理 Jenkins”选项来获取 Jenkins 的各种配置选项。

jenkins configuration1

然后,将显示以下屏幕 -

jenkins configuration2

单击配置系统。下面讨论了一些 Jenkins 配置设置,这些设置可以执行。

Jenkins Home Directory

Jenkins 需要一些磁盘空间来执行构建并保留归档。可以在 Jenkins 的配置屏幕中检查此位置。默认情况下,此位置设置为 ~/.jenkins,此位置最初将存储在用户配置文件位置中。在适当的环境中,您需要将此位置更改为一个足够的位置来存储所有相关的构建和归档。可以通过以下方式做到这一点

  1. 在启动 servlet 容器之前,将 “JENKINS_HOME” 环境变量设置到新的主页目录。

  2. 将“JENKINS_HOME”系统属性设置为 servlet 容器。

  3. 将 JNDI 环境条目“JENKINS_HOME”设置为新目录。

以下示例将使用设置“JENKINS_HOME”环境变量的第一个选项。

首先创建新文件夹 E:\Apps\Jenkins。从当前 ~/.jenkins 复制所有内容到此新目录。

设置 JENKINS_HOME 环境变量指向计算机上安装 Java 的基本目录位置。例如,

OS

Output

Windows

将环境变量设置 JENKINS_HOME 为您想要的位置。例如,您可以将其设置为 E:\Apps\Jenkins

Linux

export JENKINS_HOME =/usr/local/Jenkins 或您想要的位置。

在 Jenkins 仪表板中,从左侧菜单中单击管理 Jenkins。然后从右侧单击“配置系统”。

在主目录中,您现在将看到已配置的新目录。

jenkins home directory

===

这指的是 Jenkins 计算机上能够同时执行的总作业数。这可以根据要求进行更改。有时建议将此数字保持为计算机上 CPU 数量相同以获得更好的性能。

Environment Variables

这用于添加应用于所有作业的自定义环境变量。这些是键值对,可在构建中根据需要进行访问和使用。

Jenkins URL

默认情况下,Jenkins URL 指向本地主机。如果您为您的计算机设置了域名,将其设置为域名,否则用计算机的 IP 覆盖本地主机。这有助于设置从属服务器并在使用电子邮件发送链接时直接使用环境变量 JENKINS_URL(可以访问)访问 Jenkins URL。

Email Notification

在电子邮件通知区域,您可以配置 SMTP 设置用于发送电子邮件。这需要 Jenkins 连接到 SMTP 邮件服务器并向收件人列表发送电子邮件。

Jenkins - Management

要管理 Jenkins,请单击左侧菜单侧的“管理 Jenkins”选项。

因此,可以通过单击左侧菜单侧的“管理 Jenkins”选项来获取 Jenkins 的各种配置选项。

jenkins management1

然后,将显示以下屏幕 -

jenkins management2

系统管理选项中的部分选项如下 −

Configure System

管理构建使用各种工具的路径,比如 JDK、Ant 和 Maven 的版本,以及安全选项、电子邮件服务器和其他系统配置详情。安装插件时。Jenkins 将在安装插件后自动添加所需的配置字段。

Reload Configuration from Disk

Jenkins 将所有系统和构建作业配置详情存储为 XML 文件,这些文件存储在 Jenkins 主页目录中。此处还存储所有构建历史记录。如果您要将构建作业从一个 Jenkins 实例迁移到另一个实例,或存档旧的构建作业,您需要将相应的构建作业目录添加到或从 Jenkins 的构建目录中删除。您无需离线 Jenkins 即可执行此操作 — 您只需使用“从磁盘重新加载配置”选项直接重新加载 Jenkins 系统和构建作业配置即可。

Manage Plugin

此处可以从不同的源代码管理工具(比如 Git、Mercurial 或 ClearCase)安装各种第三方插件,向质量代码报告和代码覆盖率报告中进行度量。可以通过“管理插件”屏幕安装、更新和移除插件。

manage plugins

System Information

此屏幕展示所有当前 Java 系统属性和系统环境变量的列表。此处可以准确查看 Jenkins 正在运行的 Java 版本、它运行于哪个用户下,等等。

以下屏幕截图显示了此区域内可用的部分键值信息。

system information

System Log

“系统日志”屏幕是一种查看实时 Jenkins 日志文件的便捷方式。此屏幕的主要用途是解决问题。

Load Statistics

此页面以图形化数据方式显示 Jenkins 实例有多忙,以并发构建数和构建队列长度的形式,这可以了解构建在执行前需要等待多长时间。这些统计数据可以很好地说明从基础设施角度来看,是否需要额外容量或构建节点。

Script Console

此屏幕允许您在服务器上运行 Groovy 脚本。对于需要内部 Jenkins 架构的专业知识的高级故障排除来说,它是很有帮助的。

Manage nodes

Jenkins 能够处理并行和分布式构建。在此屏幕中,您可以配置希望构建的数量。Jenkins 将同时运行,并且如果您正在使用分布式构建,请设置构建节点。构建节点是 Jenkins 可以用于执行其构建的另一台机器。

Prepare for Shutdown

如果需要关闭 Jenkins 或运行 Jenkins 的服务器,最好不要在执行构建时关闭。要干净地关闭 Jenkins,可以使用“为关闭做准备”链接,它会阻止启动任何新的构建。最终,当所有当前的构建都已完成,将能够干净地关闭 Jenkins。

Jenkins - Setup Build Jobs

对于此练习,我们将在 Jenkins 中创建一个作业,该作业将选取一个简单的 HelloWorld 应用程序,构建并运行 Java 程序。

Step 1 − 转到 Jenkins 仪表板并单击新建项

setup build jobs

Step 2 − 在下一个屏幕中,输入项名称,在本例中我们将其命名为 Helloworld。选择“Freestyle project option”(自由风格项目选项)

helloworld

Step 3 − 将出现以下屏幕,你可以在其中指定作业的详细信息。

helloworld config

Step 4 − 我们需要指定需要构建的文件的位置。在此示例中,我们将假设已设置包含“HelloWorld.java”文件的本地 Git 存储库 (E:\Program)。因此,向下滚动并单击 Git 选项,然后输入本地 Git 存储库的 URL。

Note − 如果你将存储库托管在 Github 上,你还可以在此处输入该存储库的 URL。除此之外,你需要单击凭据的添加按钮,以便向 Github 存储库添加用户名和密码,以便可以从远程存储库中选取代码。

git repository

Step 5 − 现在转到构建部分,然后单击添加构建步骤 → 执行 Windows 批处理命令

execute windows batch command

Step 6 − 在命令窗口中,输入以下命令,然后单击保存按钮。

Javac HelloWorld.java
Java HelloWorld
save

Step 7 − 保存后,你可以单击立即构建选项,查看你是否已成功定义作业。

build now

Step 8 − 计划构建后,它将运行。以下构建历史记录部分显示构建正在进行。

build history

Step 9 − 构建完成后,构建状态将显示构建是否成功。在我们的示例中,已成功执行以下构建。单击构建历史记录中的 #1,以显示构建的详细信息。

details

Step 10 − 单击控制台输出链接查看构建的详细信息

console output1
console output2

除了上面显示的步骤之外,还有很多方法可以创建构建作业,可用的选项很多,这使得 Jenkins 成为如此出色的持续部署工具。

Jenkins - Unit Testing

Jenkins 为 Junit 提供开箱即用的功能,并针对其他技术提供大量单元测试插件,例如用于 .Net 单元测试的 MSTest。如果你前往链接 https://wiki.jenkins-ci.org/display/JENKINS/xUnit+Plugin ,它将提供可用的单元测试插件列表。

unit testing
unit testing plugins

Example of a Junit Test in Jenkins

以下示例将考虑

  1. 一个基于 Junit 的简单 HelloWorldTest 类。

  2. Ant 作为 Jenkins 中的构建工具,用来相应地构建类。

Step 1 − 前往 Jenkins 仪表板并单击现有的 HelloWorld 项目,然后选择配置选项

junit test example

Step 2 − 浏览到“添加构建步骤”的区域,然后选择“调用 Ant”选项。

invoke ant

Step 3 − 点击“高级”按钮。

advanced button

Step 4 − 在构建文件部分中,输入 build.xml 文件的位置。

xml location

Step 5 − 接下来,单击“添加构建后操作”选项,然后选择“发布 Junit 测试结果报告”选项。

publish junit report

Step 6 − 在测试报告 XML 中,输入如下图所示的位置。确保报告是创建在 HelloWorld 项目工作区中的一个文件夹中。“*.xml”主要是告诉 Jenkins 选择由 Junit 测试用例的运行生成的 XML 文件。这些 XML 文件随后将被转换成报告,以便以后查看。

完成后,单击末尾的“保存”选项。

report test xml

Step 7 − 保存后,您可以单击“立即构建”选项。

构建完成后,将显示构建的状态是成功还是失败。在构建输出信息中,您现在将注意到一个称为测试结果的新部分。在我们的示例中,输入了一个负面测试用例,以便结果失败。

build option

您可以转到控制台输出以查看更多信息。但更有趣的是,如果您单击“测试结果”,您现在将看到测试结果的详细信息。

test result

Jenkins - Automated Testing

持续集成的基本原则之一是构建应该是可验证的。您必须能够客观确定特定构建是否准备好进入构建过程的下一阶段,而最便捷的方式是使用自动化测试。如果没有适当的自动化测试,您会发现自己必须保留许多构建工件并手动测试它们,这几乎不符合持续集成的精神。以下示例展示了如何使用 Selenium 运行自动化网络测试。

Step 1 − 前往“管理插件”。

automated testing

Step 2 − 找到 Hudson Selenium 插件并选择安装。重新启动 Jenkins 实例。

hudson selenium plugin

Step 3 − 前往“配置系统”。

configure system

Step 4 − 配置 Selenium 服务器 jar,并单击“保存”按钮。

configure selenium server

Note − Selenium jar 文件可以从以下位置下载: SeleniumHQ

单击下载 Selenium 独立服务器。

download selenium standalone server

Step 5 − 返回到您的仪表板并单击 HelloWorld 项目的“配置”选项。

configure

Step 6 − 单击“添加构建步骤”并选择“seleniumHQ htmlSuite 运行”选项。

seleniumhq html suite run

Step 7 − 添加 Selenium 测试的必要详细信息。这里的 suiteFile 是使用 Selenium IDE 生成的 TestSuite。点击保存并执行构建。现在,构建后会启动 Selenium 驱动程序并执行 html 测试。

selenium driver html test

Jenkins - Notification

Jenkins 自带了一项开箱即用的功能,可为构建项目添加电子邮件通知。

Step 1 - 配置 SMTP 服务器。转到管理 Jenkins → 配置系统。转到电子邮件通知部分,并输入所需的 SMTP 服务器和用户电子邮件后缀详细信息。

smtp server

Step 2 - 在 Jenkins 项目中配置收件人 - 当你配置任何 Jenkins 构建项目时,最后都会有能力添加将收到不稳定或中断构建电子邮件通知的收件人。然后,单击保存按钮。

configure recipients

除了默认设置外,市场上还有通知插件可用。一个示例是 Tikal Knowledge 的通知插件,它允许 JSON 和 XML 格式发送 job 状态通知。此插件允许将端点配置如下所示。

tikal knowledge plugin

以下是每个选项的详细说明 -

  1. "Format" - 这是通知有效负载格式,可以是 JSON 或 XML。

  2. "Protocol" - 用于发送通知消息的协议,HTTP、TCP 或 UDP。

  3. "Event" - 触发通知的 job 事件:Job Started、Job Completed、Job Finalized 或 All Events(默认选项)。

  4. "URL" - 要向其发送通知的 URL。对于 HTTP 协议,它采用 “ http://host ” 形式;对于 TCP 和 UDP 协议,采用 “host:port” 形式。

  5. "Timeout" - 发送通知请求的超时时间(以毫秒为单位),默认情况下为 30 秒。

Jenkins - Reporting

如上文所示,有许多可用报告插件,最简单的插件是为 jUnit 测试提供的报告。

在任何作业的后构建操作中,您可以定义要创建的报告。构建完成之后,测试结果选项将可用以供进一步细化。

jenkins reporting

Jenkins - Code Analysis

Jenkins 有一系列代码分析插件。各种插件可以在 https://wiki.jenkins-ci.org/display/JENKINS/Static+Code+Analysis+Plugins 找到。

jenkins code analysis

该插件为静态代码分析插件提供实用程序。Jenkins 可以解析来自各种代码分析工具(例如 CheckStyle、FindBugs、PMD 等)的结果文件。对于每个相应的代码分析工具,需要在 Jenkins 中安装相应的插件。

此外,插件附加项 Static Analysis Collector 可以将这些插件的个别结果合并到单个趋势图和视图中。

该插件可以提供以下信息:

  1. 作业中的警告总数

  2. 显示某个构建的新增警告和已修复警告

  3. 趋势报告显示每个构建的警告数

  4. 按模块、包、类别或类型对已发现的警告进行的概述

  5. 按严重性(或新增和已修复)对已发现的警告进行的详细报告(可选)

Jenkins - Distributed Builds

如果存在需要定期构建的更大、更繁重的项目,有时需要使用许多构建机器。在中央机器上运行所有这些构建可能不是最佳选择。在这样的情况下,可以将其他 Jenkins 机器配置为从属机器以减轻主 Jenkins 服务器的负载。

有时您可能还需要不同的环境来测试您的构建。在这种情况下,几乎必须使用从属来表示每个所需的环境。

从属是一台计算机,用于从主服务器卸载构建项目,一旦完成设置,此任务分配将是完全自动的。确切的委派行为取决于每个项目的配置;一些项目可能会选择“坚持”到特定机器进行构建,而另一些项目可能会选择在从属之间自由漫游。

由于每个从属都运行一个称为“从属代理”的单独程序,因此无需在从属上安装完整的 Jenkins(程序包或编译的二进制文件)。有各种方法可以启动从属代理,但最终从属代理和 Jenkins 主程序需要建立双向通信链接(例如 TCP/IP 套接字)才能运行。

要在 Jenkins 中设置从属/节点,请按照以下步骤操作。

Step 1 - 转到管理 Jenkins 部分并向下滚动到管理节点部分。

manage nodes

Step 2 - 单击新建节点

new nodes

Step 3 - 为节点指定一个名称,选择哑从属选项并单击确定。

dumb slave

Step 4 - 输入节点从属机器的详细信息。在下面的示例中,我们认为从属机器是 Windows 机器,因此选择“让 Jenkins 以 Windows 服务形式控制此 Windows 从属”作为启动方法。我们还需要添加从属节点的必要详细信息,例如节点名称和节点机器的登录凭据。单击保存按钮。标签名称输入为“New_Slave” 的内容可用于配置作业以使用此从属机器。

slave machine1

完成上述步骤后,新节点机器最初将处于脱机状态,但如果正确输入前一个屏幕中的所有设置,则它将变为联机状态。如果需要,可以随时使节点从属机器脱机。

slave machine2

Jenkins - Automated Deployment

有许多可用的插件,这些插件可用于在成功构建后将构建文件传输到相应应用程序/Web 服务器。一个示例是“将文件部署到容器插件”。若要使用,请按照以下步骤操作。

Step 1 − 转到“管理 Jenkins → 管理插件”。转到“可用”部分,找到插件“将文件部署到容器插件”,然后安装插件。重新启动 Jenkins 服务器。

deploy to container plugin

该插件会获取一个 war/ear 文件,并在构建结束时将该文件部署到正在运行的远程应用程序服务器。

Tomcat 4.x/5.x/6.x/7.x

JBoss 3.x/4.x

Glassfish 2.x/3.x

Step 2 − 转到“Build project”,然后单击“Configure”选项。选择“将 war/ear 部署到容器”选项

deploy war ear container

Step 3 − 在“将 war/ear 部署到容器”部分,输入需要部署文件的服务器所需详细信息,然后单击“Save”按钮。这些步骤现在将确保在成功构建后将所需文件部署到所需的容器。

demo config

Jenkins 中提供各种插件,用于展示一段时间内执行的构建的指标。这些指标非常有用,可以帮助您了解构建以及它们随时间推移的失败/通过频率。例如,我们来看看“构建历史记录指标插件”。

该插件在安装后会为所有构建计算以下指标:

  1. 平均故障时间 (MTTF)

  2. 平均恢复时间 (MTTR)

  3. 构建时间的标准偏差

Step 1 − 转到 Jenkins 仪表板,并单击“Manage Jenkins(管理 Jenkins)”

welcome to jenkins

Step 2 − 转到“Manage Plugins(管理插件)”选项。

metrics trends manage plugins1

Step 3 − 转到“Available(可用)”选项卡,搜索插件“Build History Metrics plugin(构建历史记录指标插件)”,并选择“install without restart(不重启安装)”。

install without restart1

Step 4 − 屏幕上将显示以下画面,确认已成功安装插件。重新启动 Jenkins 实例。

installation success confirmation1

转到“Job(作业)”页面时,您将看到包含已计算指标的表格。指标显示为过去 7 天、过去 30 天以及所有时间段。

metrics table

要查看 Jenkins 中的总体趋势,可以使用插件来收集 Jenkins 和构建中的信息,并以图表格式显示这些信息。此类插件的一个示例为“Hudson global-build-stats plugin”。接下来,我们按步骤执行。

Step 1 − 转到 Jenkins 仪表板,并单击“Manage Jenkins(管理 Jenkins)”

hudson global build stats

Step 2 − 转到“Manage Plugins(管理插件)”选项

metrics trends manage plugins2

Step 3 − 转到“Available(可用)”选项卡,搜索插件“Hudson global-build-stats plugin(Hudson 全局构建统计插件)”,并选择“install without restart(不重启安装)”。

install without restart2

Step 4 − 屏幕上将显示以下画面,确认已成功安装插件。重新启动 Jenkins 实例。

installation success confirmation2

要查看全局统计信息,请按照步骤 5 至 8 进行操作。

Step 5 − 转到 Jenkins 仪表板,并单击“Manage Jenkins(管理 Jenkins)”。在“Manage Jenkins(管理 Jenkins)”屏幕中向下滚动,您现在将看到一个名为“Global Build Stats(全局构建统计信息)”的选项。单击此链接。

global build stats

Step 6 − 单击“Initialize stats(初始化统计信息)”按钮。此操作将收集已执行构建的所有现有记录,并根据这些结果创建图表。

initialize stats

Step 7 − 初始化数据后,即可创建新图表。单击“Create new chart(创建新图表)”链接。

create new chart

Step 8 − 屏幕上会出现一个弹出窗口,其中输入新图表详细信息的相关信息。输入以下必需信息:

  1. 标题 – 任意标题信息,此示例中显示为“Demo”

  2. Chart Width – 800

  3. Chart Height – 600

  4. 图表时间比例 – 每日

  5. 图表时间长度 – 30 天

其余信息可以保留原样。输入信息后,单击“Create New chart(创建新图表)”。

adding new chart

您现在将会看到显示构建随时间推移趋势的图表。

displaying trends

如果您单击图表中的任何部分,它将为您提供有关该作业及其构建的详细信息的分解。

global build search

Jenkins - Server Maintenance

以下是一些您将执行的基本活动,其中一些是 Jenkins 服务器维护的最佳实践

URL Options

将以下命令附加到 Jenkins 实例 URL 时,将在 Jenkins 实例上执行相关操作。

http://localhost:8080/jenkins/restart − 重新启动 Jenkins

http://localhost:8080/jenkins/reload − 重新加载配置

Backup Jenkins Home

Jenkins 主目录就是 Jenkins 存储所有作业信息、构建等信息的位置。当您单击“管理 Jenkins → 配置系统”时,可以看到主目录的位置。

backup jenkins home

将 Jenkins 设置在具有最多可用磁盘空间的分区上——由于 Jenkins 将采用为各种作业定义的源代码并执行持续构建,因此始终确保将 Jenkins 设置在具有足够硬盘空间的驱动器上。如果硬盘空间耗尽,则 Jenkins 实例上的所有构建都将开始失败。

另一个最佳实践是编写 cron 作业或维护任务,这些任务可以执行清理操作,以避免设置 Jenkins 的磁盘变满。

Jenkins - Continuous Deployment

Jenkins 为提供连续部署和交付提供了良好的支持。如果您查看通过部署进行的任何软件开发流程,它将如下所示。

jenkins continuous deployment

持续部署的主要部分是确保上面显示的整个流程是自动化的。Jenkins 通过各种插件实现所有这些,其中之一是“部署到容器插件”,该插件在早期课程中介绍过。

continuous deployment container plugin

有可用的插件可以实际提供连续部署流程的图形化表示。但首先在 Jenkins 中创建另一个项目,以便我们可以很好地了解此内容如何运作。

让我们创建一个模拟 QA 阶段的简单项目,并对 Helloworld 应用程序执行测试。

Step 1 − 进入 Jenkins 仪表盘并单击“新建项目”。选择“自由风格项目”,然后输入项目名称“QA”。单击“确定”按钮创建项目。

freestyle project

Step 2 − 在此示例中,我们保持简单,只需使用此项目为 Helloworld 应用程序执行测试程序。

helloworld application

所以我们的 QA 项目现已设置。您可以进行构建以查看是否正确构建。

qa project build

Step 3 − 现在进入您的 Helloworld 项目并单击“配置”选项

project configure option

Step 4 − 在项目配置中,选择“添加构建后操作”,然后选择“构建其他项目”。

add post build action

Step 5 − 在“要构建的项目”部分,输入 QA 作为要构建的项目名称。您可以将选项保留为默认的“仅在构建稳定时触发”。单击保存按钮。

trigger stable build

Step 6 − 构建 Helloworld 项目。现在,如果您查看控制台输出,您还将看到在 Helloworld 项目成功构建后,QA 项目的构建也会发生。

qa project console project

Step 7 − 现在安装 Delivery pipeline 插件。转至管理 Jenkins → 管理插件。在可用选项卡中,搜索“Delivery Pipeline 插件”。单击无需重新启动即可安装。完成后,重启 Jenkins 实例。

restart jenkins instance

Step 8 − 要在操作中查看 Delivery pipeline,在 Jenkins 仪表板中,单击“全部”选项卡旁边的选项卡中的加号符号。

delivery pipeline

Step 9 − 输入任何视图名称,然后选择“Delivery pipeline 视图”选项。

delivery pipeline view

Step 10 − 在下一个屏幕中,您可以保留默认选项。可以更改以下设置 −

  1. 确保选中“显示静态分析结果”选项。

  2. 确保选中“显示总构建时间”选项。

  3. 对于初始作业 – 输入 Helloworld 项目作为应该构建的第一个作业。

  4. 输入管道的任何名称

  5. Click the OK button.

change settings

您现在可以查看整个交付管道的出色视图,并且您将能够看到整个管道中每个项目的进度。

each project status

另一个著名的插件是 build pipeline plugin 。让我们来看看这个。

Step 1 − 转至管理 Jenkins → 管理插件。在可用选项卡中,搜索“Build Pipeline 插件”。单击无需重新启动即可安装。完成后,重启 Jenkins 实例。

build pipeline plugin

Step 2 − 要在操作中查看 Build pipeline,在 Jenkins 仪表板中,单击“全部”选项卡旁边的选项卡中的加号符号。

see build pipeline action

Step 3 − 输入任何视图名称,然后选择“Build Pipeline 视图”选项。

build pipeline view

Step 4 − 接受默认设置,仅在选定的初始作业中,确保输入 Helloworld 项目的名称。单击确定按钮。

accept default settings

您现在可以查看整个交付管道的出色视图,并且您将能够看到整个管道中每个项目的进度。

entire pipeline status

Jenkins - Managing Plugins

要获取 Jenkins 中所有可用插件的列表,可以访问链接 − https://wiki.jenkins-ci.org/display/JENKINS/Plugins

jenkins managing plugins

我们已经看到了很多安装插件的实例,让我们看看与插件相关的其他一些维护任务

Uninstalling Plugins

要卸载插件,请转到管理 Jenkins → 管理插件。单击已安装选项卡。部分插件将有卸载选项。你可以单击这些按钮来卸载插件。确保卸载后重启你的 Jenkins 实例。

uninstalling plugins

Installing another Version of a Plugin

有时可能需要安装插件的旧版本,在这种情况下,你可以从 Jenkins 网站上的相关插件页面下载插件。然后你可以使用 Upload 选项手动上传插件。

installing another version plugin

Jenkins - Security

在 Jenkins 中,您可以设置用户及其在 Jenkins 实例上的相关权限。默认情况下,您不希望每个人都能够在 Jenkins 中定义作业或其他管理任务。因此,Jenkins 具有使用安全配置的能力。

要配置 Jenkins 中的安全,请执行以下步骤。

Step 1 − 单击“管理 Jenkins”,然后选择“配置全局安全性”选项。

configure global security

Step 2 − 单击“启用安全”选项。作为一个示例,让我们假设我们希望 Jenkins 维护它自己的用户数据库,因此在“安全域”中,选择“Jenkins 自己的用户数据库”选项。

默认情况下,您希望中央管理员在系统中定义用户,因此请确保未选中“允许用户注册”选项。您可以暂时将其余选项保持原样,然后单击“保存”按钮。

enable security option

Step 3 − 您将被提示添加您的第一个用户。作为一个示例,我们正在为系统设置一名管理员用户。

admin user

Step 4 − 现在是时候在系统中设置您的用户了。现在,当您转到“管理 Jenkins”,然后向下滚动时,您将看到“管理用户”选项。单击此选项。

manage user

Step 5 − 就像您定义管理员用户一样,开始为系统创建其他用户。作为一个示例,我们只创建了名为“user”的另一个用户。

user

Step 6 − 现在是设置您的权限的时候了,基本上是谁可以访问什么。转到“管理 Jenkins → 配置全局安全性”。

现在在授权部分,点击“基于 Matrix 的安全性”

authorization section

Step 7 - 如果你在用户组列表中看不到该用户,输入用户名并将其加入到列表中。然后给用户分配相应的权限。

在你定义相关的授权之后,点击保存按钮。

你的 Jenkins 安全性现已设置好。

Note - 对于 Windows AD 身份验证,有必要给 Jenkins 添加活动目录插件。

Jenkins - Backup Plugin

Jenkins 有一个备份插件,可用于备份与 Jenkins 相关的关键配置设置。按照以下步骤执行,即可执行备份。

Step 1 − 点击管理 Jenkins 并选择“管理插件”选项。

manage backup plugin

Step 2 − 在可用选项卡中,搜索“备份插件”。点击在不重启的情况下安装。完成后,重启 Jenkins 实例。

backup plugin1
backup plugin2

Step 3 − 现在,当您转到管理 Jenkins 并向下滚动时,您会看到“备份管理器”作为一个选项。点击此选项。

backup manager

Step 4 - 单击设置。

backup manager setup

Step 5 - 在这里,要定义的主要字段是备份目录。请确保它位于与 Jenkins 实例设置所在的驱动器不同的另一个驱动器上。单击保存按钮。

backup config files

Step 6 - 从备份管理器屏幕中单击“备份 Hudson 配置”以启动备份。

backup hudson configuration

下一个屏幕将显示备份状态

backup status

要从备份中恢复,请转到备份管理器屏幕,单击还原 Hudson 配置。

restore hudson configuration

将显示备份列表,单击适当的备份以单击启动还原以开始还原备份。

backup restoration

Jenkins - Remote Testing

Web 测试,比如硒测试,可以通过 master 从属和 selenium 套件插件安装在远程从属机上运行。下列步骤显示如何使用此配置运行远程测试。

Step 1 - 确保你的 master-slave 配置已经完成。前往你的 master Jenkins 服务器。前往管理 Jenkins → 管理节点。

jenkins remote testing

在我们的节点列表中,DXBMEM30 标签是 slave 机。在本例中,master 和 slave 机器都是 Windows 机器。

node list

Step 2 - 为 DXBMEM30 slave 机点击配置。

configure slave machine

Step 3 - 确保启动方法被设置为“通过 Java Web Start 启动从属代理”

launch slave agents

Step 4 - 现在前往你的 slave 机并在那里,使用浏览器实例打开你的 Jenkins master 实例。然后前往管理 Jenkins → 管理节点。前往 DXBMEM30 并点击

remote testing manage nodes

Step 5 - 点击 DXBMEM30 实例。

instance

Step 6 - 向下滚动,你会看到启动选项,它是启动“Java Web Start”的选项

java web start

Step 7 - 你将会收到一条安全警告。点击接受复选框并点击运行。

security warning

你现在将会看到一个 Jenkins Slave 窗口被打开,并且已经连接。

jenkins slave window connected

Step 8 - 配置你的测试在 slave 上运行。在此,你必须确保被创建的任务具体用于只运行硒测试。

在任务配置中,确保选项“限制该项目可以运行的位置”已被选中,并在标签表达式中放入 slave 节点的名称。

configuration

Step 9 - 确保 Selenium 的任务部分已配置。你必须确保 Sample.html 文件和 selenium-server.jar 文件也存在于 slave 机器上。

configure selenium

一旦你完成了所有上述步骤,并点击构建,此项目将会像预期的那样在 slave 机器上运行 Selenium 测试。