内容


使用 Jenkins 设置一个持续交付框架

Comments

简介

在持续交付流程中设置框架很重要。框架决定了 DevOps 的效率以及在持续交付流程中可以完成哪些工作。

本文提供了有关 Jenkins 的信息并演示了如何:

  • 使用 Jenkins 设置持续交付框架。
  • 将此方面的知识应用到持续交付框架中。
  • 使用 Jenkins 实现持续交付框架。

目标受众

本文的预期受众是从事持续交付或持续自动测试工作的软件工程师。要想按照本文中的步骤进行操作,您应该理解:

  • 脚本开发。
  • 软件开发流程。

Jenkins 概述

Jenkins 是一个持续集成工具,通常用于软件开发工作。这种自动化的框架可运行重复的作业。Jenkins 可以管理和监视远程系统上的命令启动,还能执行可通过命令行运行的任何操作。Jenkins 将电子邮件、TestNG 和其他工具与支持插件集成起来。

安装 Jenkins 后(如果尚未安装 Jenkins,请参见侧栏内容),使用浏览器和 http://yourjenkinsmasterhost:8080 访问 Jenkins。

Jenkins 支持主/从模式。系统会将构建项目的工作负载委托给多个节点,允许单个 Jenkins 托管大量的项目,或者为构建/测试工作提供所需的不同环境。

设置和启用 Jenkins

在使用 Jenkins 之前,需要先配置它。在本文中,您将了解如何设置主/从模式、安装插件、配置项目以及配置变量/属性。

设置主和从机器

首先,在主机器(LinuxWindows)上安装 Jenkins,然后使用 Jenkins 主机器上的帮助内容设置从(Windows 或 Linux)机器。

Jenkins 内置了 SSH 客户端实现,用于同远程 sshd 和从代理进行通信。还有多种在主从机器之间进行通信的方式:

  • 对于 UNIX 从机器,可通过 SSH 进行通信。只需在从机器上安装 SSH 和 JRE。
  • 对于 Windows 机器,可以使用分布式组件对象模型( Distributed Component Object Model,DCOM)
  • 当主机器无法看到从机器时,可以通过 Java Web Start 使用单独的套接字连接。

在 Linux 上安装主模式

要在 Linux 机器上安装主模式,可以输入清单 1 中所列的命令。

清单 1. 在 Linux 机器上安装主模式
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install jenkins

在 Windows 机器上安装主模式

要在 Windows 机器上安装主模式,可以输入清单 2 中所列的命令。

清单 2. 在 Windows 机器上安装主模式
java -jar jenkins.war

运行该命令后,访问 http://<hostname>:8080/,然后单击 Manage Jenkins > Install as Windows Service > Install

设置从模式

访问 http://<JenkinsMasterHost>:8080/ > Manage Jenkins > Manage Node > New Node 并根据从主机来配置从信息。Jenkins 主机器可以帮助您将 Jenkins 安装到从机器上。

对于 Windows 从模式,还有一个额外的命令:

清单 3. 额外的命令,Windows 从模式
sc.exe create "<serviceKey>" start= auto binPath= "<path to jenkins-slave.exe>" 
DisplayName= "<service display name>"

定义服务的注册表键名称是 <serviceKey><service display name> 是在服务器管理器界面中标识该服务的标签。

管理插件

插件是 Jenkins 中另一个重要的特性。目前,Jenkins 支持 1000 多个插件。您可以将这些插件分为多个不同的类别(源代码管理插件、构建报告插件、构建工具插件等)。利用各种插件,您可以在 Jenkins 中监视、部署或配置不同的作业。要管理这些插件,可以访问 https://JenkinsMasterHost:8080,然后选择 Manage Jenkins > Manage Plugins。其中有四个选项卡:

  • Updates:有更新内容的已安装插件
  • Available:可安装的插件
  • Installed:已安装的插件
  • Advanced:管理插件

通过 Internet 安装插件

Jenkins 主机器可以访问 Internet 时,安装插件工作很轻松。在 Available 选项卡上,选择要安装的插件。您可以通过 Installed 选项卡删除插件。单击 uninstall 按钮即可删除插件。

手动安装插件

如果 Jenkins 主机器无法访问 Internet,那么可以手动安装插件。 查找您要安装的插件,然后将所下载的 *.hpi/*.jpi 文件保存到 $JENKINS_HOME/plugins 目录中。重新启动 Jenkins 即可启用这些插件。

Jenkins 项目

Jenkins 支持四类项目:自由样式 (free-style)、专家 (maven)、多配置 (multi-configuration) 和外部作业 (external job)。自由样式项目是 Jenkins 的核心特性。可在 SCM 中将其与任何构建系统组合在一起。您也可以使用它完成软件构建以外的其他工作。

配置项目

进入 https://JenkinsMasterHost:8080,选择 New Item,指定 Item nameType 即可创建项目。

在项目配置页上,Item name 也称为 Project name。目前有四种条目 (item) 类型。您也可以选择选项 copy existing item,如图 1 所示。单击 OK 打开项目配置页。

图 1. 创建新条目
创建新条目窗口中的单选按钮
创建新条目窗口中的单选按钮

需要了解的配置页信息有:

Project name:如果项目名称已更新,那么条目名称也已更新。

Description:作业描述

Strategy:日志策略,保留多少日志

Parameterized:定义项目的各种变量。目前有不同类型的变量(文件参数、文本参数、字符串参数等)

Where:限制可在何处运行该项目

Advance configuration: 更多的规范,控制如何构建项目

您选择要安装的插件会影响项目中具有哪些类别和功能。一些类别和功能是:

  • 源代码管理:管理源代码的工具。
  • 构建触发器:触发一次构建工作的方法。
  • 构建:构建工作是项目中最重要的部分。您要指定运行一个项目的准确步骤。常见的步骤是在 Windows 下执行 DOS 命令,在 Lunux 下执行 Shell 命令。
  • 构建后的操作:构建完成后要执行的操作。构建完成后常见的操作是:发送电子邮件、触发其他构建工作,或者发布结果报告。

完成配置工作后,单击 Save。您会发现,已保存的项目被列在 https://JenkinsMasterHost:8080Jenkins > All 中。

触发项目

利用 Jenkins,您可以手动或自动开始构建项目。目前有不同的 机制 来触发一次构建工作。如果选择自动触发构建工作,那么可以在配置项目时的 Build Triggers 中定义选项。可用的选项有:

  • Build project after other projects are built: 在配置项目后,可以定义在此项目完成后是否构建其他项目。如果目前的项目依赖于其他项目,那么可以选择此选项。
  • Trigger builds remotely (e.g., from scripts): 从其他系统还是从主机触发项目构建工作。例如,您可通过电子邮件来触发项目构建工作,或者通过脚本提交一个构建请求。
  • Build periodically: 创建一个计划来定期构建项目,与配置中定义的一样。
  • Poll SCM:此选项根据源代码更改来构建项目。使用此选项时,要指定 Jenkins 轮询修订控制系统的频率。如果发现了源代码更改,就会开始构建项目。
图 2. Build Triggers 中的选项
Build Trigger 选项
Build Trigger 选项

项目发布

准确的委托行为取决于每个项目的配置。如果将项目配置为 Restrict where this project can run,那么该项目只能在指定的机器上运行。其他项目可以选择在从机器间随意漫游,这些全都取决于配置。

目前,Jenkins 采用这些策略来分发项目:

  • 如果为项目配置了 Restrict where this project can run,那么只能在此处运行该项目
  • Jenkins 尝试在以前构建项目的同一台计算机上构建一个项目。
  • Jenkins 尝试将构建时间较长的项目移到从机器上。

设置变量/属性

全局属性

您可以在全局属性中设置环境变量(定义属性名和值)或工具位置: http://<JenkinsMasterHost>:8080,然后选择 Manage Jenkins > configuration。可以在 Jenkins 项目中使用这些属性。

环境变量

您可在项目中引用环境变量。选中 Environment variables 复选框,并定义变量的 namevalue ,如图 3 所示。

图 3. 定义环境变量
name 和 value 文本字段
name 和 value 文本字段

工具位置

选中 Tool Locations 复选框。从下拉列表中选择工具 name 并定义该工具的 home 目录。可在项目中引用该工具。

图 4. 定义工具位置
tool locations、namen 和 home 字段
tool locations、namen 和 home 字段

项目本地属性

项目本地属性只能在项目内部使用。配置一个项目时,可选择选项 This build is parameterized,如图 5 所示。选择该选项意味着允许函数以名称/值对的形式添加参数。您可使用这些参数作为项目的本地属性。

图 5. 设置本地属性
本地属性屏幕截图
本地属性屏幕截图

实践:持续交付框架的结构和流程

持续交付的目标是确保用一种高效且高质量的方法来开发、测试、部署软件并最终将软件交付到生成环境中。采用持续交付方法后,对软件系统任何部分执行的每次更改(无论是在基础架构、应用还是自定义数据级别进行的更改),都会通过一个特定的交付管道将其持续地应用到生产环境中。

流程

持续交付需要快速且自动地部署各种更改集。完成部署或交付工作需要多个步骤。标准的流程是:

  • 开发人员交付各种更改
  • 源代码控制工具进行构建工作
  • 运行自动的测试工作
  • 安装构建内容

图 6 显示了持续交付流程。在计划好的时刻,启动 Jenkins 中的第一个项目。

项目 1
该项目中的首个任务是通过源代码管理工具(如 IBM® Rational Team Concert™)下载源代码。如果项目失败,则会发送一个电子邮件通知,告知失败情况并且停止所有其他项目。如果项目成功完成,则会开始处理下一个项目。
项目 2
IBM® Security AppScan® 检查项目 1 中下载的源代码是否有安全性问题。
项目 3
AppScan 项目完成后,构建工作开始。
项目 4
成功构建完成后,下一个项目是在构建验证测试(Build Verification Test,BVT)环境中安装该构建版本。
项目 5
在 BVT 环境中运行 BVT 测试案例。如果 BVT 测试成功通过,那么 Jenkins 会开始在开发和测试环境(项目 6 和 7)中安装该构建版本。
项目 6
在开发环境中安装构建版本并发送电子邮件通知。项目在开发环境中安装构建版本并准备好环境,这样开发人员可执行集成工作或开发工作。
项目 7
在测试环境中安装构建版本。在测试环境中安装构建版本后,Jenkins 会触发项目 8,以便运行功能验证测试(Functional Verification Test,FVT)。
项目 8
FVT 是一个自动测试列表,其中包括很多测试。FVT 测试通过后,会在生产环境中安装构建版本(项目 8)。
项目 9
您可以在位于云或 IBM® Softlayer® 中的客户本地服务器上安装生产环境。内外部用户都可访问该环境。

图 6 显示了持续交付框架流程。该项目成功完成后,会触发开始下一个项目。如果项目失败,那么流程将会结束并向订阅者发送电子邮件。

图 6. 持续交付框架流程
持续交付框架的流程图
持续交付框架的流程图

持续交付框架的部署拓扑结构

图 7 的左侧显示了传统的开发部署。开发人员向诸如 Rational Team Concert (RTC) 等的源代码控制服务器提交更改集,然后构建服务器开始生成构建版本。

图 7 的右侧展示了持续交付流程。添加 Jenkins 以后,会有一个 Jenkins 主机器。Rational Team Concert 构建工具包已安装在该服务器上。Jenkins 主模式安装在 Rational Team Concert 插件中。它使用该构建工具包并通过 Rational Team Concert 下载源代码,同时触发构建工具包生成构建版本。AppScan 和 BVT 项目也在 Jenkins 主机器上运行。开发环境、测试环境和生成环境都作为 Jenkins 从机器提供服务。它们由 Jenkins 主机器控制,并运行安装项目。测试环境则运行功能验证测试项目。

备注
如果将项目与计算机绑定,就能更轻松地跟踪各种任务,因为不同的机器拥有不同的角色。

图 7. 持续交付框架的拓扑结构
开发和 Jenkins 流程
开发和 Jenkins 流程

结束语

现在,您已了解了如何使用 Jenkins 设置持续交付框架。该框架可帮助开发人员和测试人员自动部署各种工作,节约其宝贵的时间。该框架还能帮助您尽早发现流程中的任何问题或缺陷。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=DevOps, Rational
ArticleID=1008645
ArticleTitle=使用 Jenkins 设置一个持续交付框架
publish-date=06172015