在持续交付流程中设置框架很重要。框架决定了 DevOps 的效率以及在持续交付流程中可以完成哪些工作。
本文提供了有关 Jenkins 的信息并演示了如何:
回页首
本文的预期受众是从事持续交付或持续自动测试工作的软件工程师。要想按照本文中的步骤进行操作,您应该理解:
回页首
Jenkins.war
-jar jenkins.war
or
jenkins.war
部署到一个 Tomcat 容器中 Jenkins 是一个持续集成工具,通常用于软件开发工作。这种自动化的框架可运行重复的作业。Jenkins 可以管理和监视远程系统上的命令启动,还能执行可通过命令行运行的任何操作。Jenkins 将电子邮件、TestNG 和其他工具与支持插件集成起来。
安装 Jenkins 后(如果尚未安装 Jenkins,请参见侧栏内容),使用浏览器和 http://yourjenkinsmasterhost:8080
访问 Jenkins。
Jenkins 支持 主/从 模式。系统会将构建项目的工作负载委托给多个 从 节点,允许单个 Jenkins 托管大量的项目,或者为构建/测试工作提供所需的不同环境。
回页首
在使用 Jenkins 之前,需要先配置它。在本文中,您将了解如何设置主/从模式、安装插件、配置项目以及配置变量/属性。
首先,在主机器(Linux或Windows)上安装 Jenkins,然后使用 Jenkins 主机器上的帮助内容设置从(Windows 或 Linux)机器。
进行管理/配置工作或者运行 Jenkins 作业的机器。
运行作业并由主机器管理的机器。
当主机器的工作负载过于繁重或者需要其他类型的机器来运行作业时,必须使用从机器。
Jenkins 内置了 SSH 客户端实现,用于同远程 sshd
和从代理进行通信。还有多种在主从机器之间进行通信的方式:
要在 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 机器上安装主模式,可以输入清单 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 。其中有四个选项卡:
Jenkins 主机器可以访问 Internet 时,安装插件工作很轻松。在 Available 选项卡上,选择要安装的插件。您可以通过 Installed 选项卡删除插件。单击 uninstall 按钮即可删除插件。
如果 Jenkins 主机器无法访问 Internet,那么可以手动安装插件。 查找您要安装的插件 ,然后将所下载的 *.hpi/*.jpi 文件保存到 $JENKINS_HOME/plugins 目录中。重新启动 Jenkins 即可启用这些插件。
Jenkins 支持四类项目:自由样式 (free-style)、专家 (maven)、多配置 (multi-configuration) 和外部作业 (external job)。自由样式项目是 Jenkins 的核心特性。可在 SCM 中将其与任何构建系统组合在一起。您也可以使用它完成软件构建以外的其他工作。
进入 https://JenkinsMasterHost:8080 ,选择 New Item ,指定 Item name 和 Type 即可创建项目。
在项目配置页上, Item name 也称为 Project name 。目前有四种条目 (item) 类型。您也可以选择选项 copy existing item ,如图 1 所示。单击 OK 打开项目配置页。
图 1. 创建新条目
需要了解的配置页信息有:
Project name:如果项目名称已更新,那么条目名称也已更新。
Strategy:日志策略,保留多少日志
Parameterized:定义项目的各种变量。目前有不同类型的变量(文件参数、文本参数、字符串参数等)
Where:限制可在何处运行该项目
Advance configuration:更多的规范,控制如何构建项目
您选择要安装的插件会影响项目中具有哪些类别和功能。一些类别和功能是:
完成配置工作后,单击 Save 。您会发现,已保存的项目被列在 https://JenkinsMasterHost:8080 Jenkins > All 中。
利用 Jenkins,您可以手动或自动开始构建项目。目前有不同的 机制 来触发一次构建工作。如果选择自动触发构建工作,那么可以在配置项目时的 Build Triggers 中定义选项。可用的选项有:
图 2. Build Triggers 中的选项
点击查看大图
关闭 [x]
从机器是指已被设置为从主机器上卸载构建项目的计算机。任务的分发是完全自动的。
准确的委托行为取决于每个项目的配置。如果将项目配置为 Restrict where this project can run ,那么该项目只能在指定的机器上运行。其他项目可以选择在从机器间随意漫游,这些全都取决于配置。
目前,Jenkins 采用这些策略来分发项目:
您可以在全局属性中设置环境变量(定义属性名和值)或工具位置: http://<JenkinsMasterHost>:8080 ,然后选择 Manage Jenkins > configuration 。可以在 Jenkins 项目中使用这些属性。
您可在项目中引用环境变量。选中 Environment variables 复选框,并定义变量的 name 和 value ,如图 3 所示。
图 3. 定义环境变量
选中 Tool Locations 复选框。从下拉列表中选择工具 name 并定义该工具的 home 目录。可在项目中引用该工具。
图 4. 定义工具位置
项目本地属性只能在项目内部使用。配置一个项目时,可选择选项 This build is parameterized ,如图 5 所示。选择该选项意味着允许函数以名称/值对的形式添加参数。您可使用这些参数作为项目的本地属性。
图 5. 设置本地属性
点击查看大图
关闭 [x]
持续交付的目标是确保用一种高效且高质量的方法来开发、测试、部署软件并最终将软件交付到生成环境中。采用持续交付方法后,对软件系统任何部分执行的每次更改(无论是在基础架构、应用还是自定义数据级别进行的更改),都会通过一个特定的交付管道将其持续地应用到生产环境中。
持续交付需要快速且自动地部署各种更改集。完成部署或交付工作需要多个步骤。标准的流程是:
图 6 显示了持续交付流程。在计划好的时刻,启动 Jenkins 中的第一个项目。
图 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 设置持续交付框架。该框架可帮助开发人员和测试人员自动部署各种工作,节约其宝贵的时间。该框架还能帮助您尽早发现流程中的任何问题或缺陷。