有没有比jekins好用的持续集成工具 jenkins

什么是持续集成
随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。
持续集成正是针对这一类问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。
持续集成的核心价值在于:
持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;
持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能;
持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。
持续集成的原则
业界普遍认同的持续集成的原则包括:
1)需要版本控制软件保障团队成员提交的代码不会导致集成失败。常用的版本控制软件有 IBM Rational ClearCase、CVS、Subversion 等;
2)开发人员必须及时向版本控制库中提交代码,也必须经常性地从版本控制库中更新代码到本地;
3)需要有专门的集成服务器来执行集成构建。根据项目的具体实际,集成构建可以被软件的修改来直接触发,也可以定时启动,如每半个小时构建一次;
4)必须保证构建的成功。如果构建失败,修复构建过程中的错误是优先级最高的工作。一旦修复,需要手动启动一次构建。
持续集成系统的组成
由此可见,一个完整的构建系统必须包括:
一个自动构建过程,包括自动编译、分发、部署和测试等。
一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库。
一个持续集成服务器。
Jenkins是由Sun的前员工开发的,它的根基是Java,但也可以用在非Java的项目里,比如PHP、Ruby on Rails、.NET。在.NET项目里,你除了Jenkins之外还要熟悉另一样工具:MSBuild。Visual Studio用MSBuild构建.NET项目。MSBuild所需的仅仅是一个脚本,在脚本中指定要执行的target。项目中的.csproj和.vbproj 文件都是MSBuild脚本。下面的几篇文章介绍如何使用Jenkins 快速搭建持续集成服务器。
阅读(...) 评论()新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
家境小康, 积分 1548, 距离下一级还需 452 积分
论坛徽章:0
本帖最后由 liuweni 于
15:32 编辑
我有做持续集成相关的工作,主要评估各种持续集成工具的优缺点,并给客户选择持续集成工具提供数据支持。
针对LZ的几个问题,我做个回复:
1、你所听说和使用过的持续集成CI工具有哪些?给你的工作带来什么优势?
接触过多种持续集成工具Jenkins / TeamCity / Electric Flow / Go / bamboo 等等。
总体来讲,持续集成优点很明显: 及时发现并反馈入库代码的缺陷 / 降低缺陷对项目造成的风险 / 节省回归人力 / 编译测试环境的固定
2、你们在工作中使用jenkins做持续集成吗?主要在工作中做了哪些事情?
Jenkins占据了持续集成80%以上的市场。由于软件架构的限制,Jenkins更加适用于中小型项目。
一般工作中会使用Jenkins对入库代码进行检测,集成,测试,发布。但是这些流程会根据项目具体的情况进行增删减。
同时,配合docker等工具实施CD也是一种不错的选择。
3、jenkins平台使用过程中遇到过一些什么问题?
就Jenkins自身而言,插件丰富是一个优点,但是部分插件的质量和进度,挺让人诟病的。
甚至有插件会引起Jenkins服务器的崩溃。
在持续集成实施过程中,针对于引入初期成本的增加和团队成员意识的转变,也是需要管理团队考虑的。
4、在部署jenkins服务的过程中,有哪些收获?是否觉得使用了jenkins之后,给你的工作带来很大的改变?
自从使用了持续集成,腰不酸,腿不疼,走路也有劲了。
某项目中,个人前后花了半年时间将虚拟化,分布式存储和持续集成结合起来使用,流程交耗时从最少一天,缩减为最多两个小时。
另外,配合树状结构的Jenkins框架,极大程度上减少了LTE BTS的集成交付时间和人力,同时,产品质量也得到的很大程度的提高。
家境小康, 积分 1548, 距离下一级还需 452 积分
论坛徽章:0
archermind_wh
武汉现在是谁啊?桂桂还在炒股没?
家境小康, 积分 1256, 距离下一级还需 744 积分
论坛徽章:28
本帖最后由 jieforest 于
16:22 编辑
支持一下。。
1、你所听说和使用过的持续集成CI工具有哪些?给你的工作带来什么优势?
首选当然是Jenkins/Hudson了。最早我接触的是Hudson ,在Oracle公司把Hudson商标给注册了后,惹怒了开源社区,于是有了新项目Jenkins,我也跟着转向了Jenkins。
其次使用过Bamboo。使用它的原因也很简单,早些年我们的项目管理使用了Jira,来自Atlassian公司的商业产品,为了整体的一致性,持续集成也同样选用了该公司的Bamboo。顺便说一句,Jira是这些年我用过的最好用的项目管理工具。(后来项目团队开始使用免费的Redmine)
CruiseControl工具:
Travis CI工具:
Buildbot工具:
Strider工具:
Integrity工具:
但这几个工具只是知道,并未真正使用过,总的来说,有Jenkins就足够了。
2、你们在工作中使用jenkins做持续集成吗?主要在工作中做了哪些事情?
会使用的。
Jenkins连接到SVN服务器,负责自动把项目打包并完成部署。
3、jenkins平台使用过程中遇到过一些什么问题?
没遇到什么大问题,小问题倒是不少,都通过网络搜索解决方法给搞定了。
要说难点,把Jenkins用好并不容易,比如它的插件有很多,用好它们是需要积累的。
要说目前还放在心里的问题,那就是Jenkins如何跟Docker技术结合起来,这方面还有待研究。以后搞定了,我分享出来。
4、在部署jenkins服务的过程中,有哪些收获?是否觉得使用了jenkins之后,给你的工作带来很大的改变?
Jenkins用好了对整个项目开发是很有帮助的,可以加快项目开发进度。
Jenkins对于整个开发的流程也是有影响的,它隐含了一些软件工程的思想,什么时候完成自动部署,什么时候测试人员介入工作等等。
顺便提一句,一些公有云服务商提供了开箱即用的Jenkins服务,比如CloudBees、Bitnami等,可惜都是国外的服务商。
论坛徽章:6
支持一下。
富足长乐, 积分 5201, 距离下一级还需 2799 积分
论坛徽章:34
以前一直用vss+脚本
现在开始用jekins+svn+maven.&&
自从用了go, github学习中.
希望能有简单的一站式方案
家境小康, 积分 1256, 距离下一级还需 744 积分
论坛徽章:28
又被删除了,真奇怪
论坛徽章:132
是不怎么智能的海量将你的内容拦截了,稍等,我看看哈回复
白手起家, 积分 114, 距离下一级还需 86 积分
论坛徽章:2
哈哈哈,要换工作么
稍有积蓄, 积分 220, 距离下一级还需 280 积分
论坛徽章:8
占个坑& && && && && &
稍有积蓄, 积分 220, 距离下一级还需 280 积分
论坛徽章:8
没用过& && && && &
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处更多公众号:gh_fdac40af67bb员工关怀最新文章相关作者文章搜狗:感谢您阅读“乱弹系列”之持续集成工具 本文版权归原作者所有,本文由网友投递产生,如有侵权请联系 ,会第一时间为您处理删除。developerWorks 社区
本文介绍了 Jenkins 并展示了如何使用 Jenkins
设置持续交付框架。该框架可构建和扫描源代码,安装成功的构建内容,运行测试并自动发送结果。
, 软件工程师,
Na Lv 于 2010 年加入 IBM,从事智慧城市领域的自动测试和交付工作。她还对自动测试和部署框架很感兴趣。
, 首席软件工程师,
Zhao Zhuo 拥有智慧城市方面的解决方案部署经验,目前在从事持续部署领域中的自动部署工作。
, 软件工程师, IBM
Yan Zhe 拥有医疗保健、化学、石油和智慧城市方面的数据集成和分析经验。Yan 还对应用集成技术和持续交付很感兴趣。
, 首席软件工程师,
Chen Xiao Long 拥有持续交付、全球化和自动化方面的经验,而且对数据挖掘和分析很感兴趣。
简介在持续交付流程中设置框架很重要。框架决定了 DevOps 的效率以及在持续交付流程中可以完成哪些工作。本文提供了有关 Jenkins 的信息并演示了如何:使用 Jenkins 设置持续交付框架。将此方面的知识应用到持续交付框架中。使用 Jenkins 实现持续交付框架。目标受众本文的预期受众是从事持续交付或持续自动测试工作的软件工程师。要想按照本文中的步骤进行操作,您应该理解:脚本开发。软件开发流程。Jenkins 概述Jenkins 是一个持续集成工具,通常用于软件开发工作。这种自动化的框架可运行重复的作业。Jenkins
可以管理和监视远程系统上的命令启动,还能执行可通过命令行运行的任何操作。Jenkins 将电子邮件、TestNG
和其他工具与支持插件集成起来。安装 Jenkins 后(如果尚未安装 Jenkins,请参见侧栏内容),使用浏览器和
http://yourjenkinsmasterhost:8080 访问 Jenkins。Jenkins
支持主/从模式。系统会将构建项目的工作负载委托给多个从节点,允许单个
Jenkins 托管大量的项目,或者为构建/测试工作提供所需的不同环境。设置和启用
Jenkins 在使用 Jenkins 之前,需要先配置它。在本文中,您将了解如何设置主/从模式、安装插件、配置项目以及配置变量/属性。 设置主和从机器首先,在主机器( 或 )上安装 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
sudo rpm --import
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 name 和 Type
即可创建项目。 在项目配置页上,Item name 也称为 Project
name。目前有四种条目 (item) 类型。您也可以选择选项 copy existing
item,如图 1 所示。单击 OK 打开项目配置页。图 1. 创建新条目需要了解的配置页信息有:Project name:如果项目名称已更新,那么条目名称也已更新。Description:作业描述Strategy:日志策略,保留多少日志Parameterized:定义项目的各种变量。目前有不同类型的变量(文件参数、文本参数、字符串参数等)Where:限制可在何处运行该项目Advance configuration: 更多的规范,控制如何构建项目您选择要安装的插件会影响项目中具有哪些类别和功能。一些类别和功能是:源代码管理:管理源代码的工具。构建触发器:触发一次构建工作的方法。构建:构建工作是项目中最重要的部分。您要指定运行一个项目的准确步骤。常见的步骤是在 Windows 下执行
DOS 命令,在 Lunux 下执行 Shell 命令。构建后的操作:构建完成后要执行的操作。构建完成后常见的操作是:发送电子邮件、触发其他构建工作,或者发布结果报告。完成配置工作后,单击 Save。您会发现,已保存的项目被列在 Jenkins
& 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 中的选项图 2. Build Triggers 中的选项项目发布准确的委托行为取决于每个项目的配置。如果将项目配置为 Restrict where this project can
run,那么该项目只能在指定的机器上运行。其他项目可以选择在从机器间随意漫游,这些全都取决于配置。目前,Jenkins 采用这些策略来分发项目:如果为项目配置了 Restrict where this project can
run,那么只能在此处运行该项目Jenkins 尝试在以前构建项目的同一台计算机上构建一个项目。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. 设置本地属性图 5. 设置本地属性实践:持续交付框架的结构和流程持续交付的目标是确保用一种高效且高质量的方法来开发、测试、部署软件并最终将软件交付到生成环境中。采用持续交付方法后,对软件系统任何部分执行的每次更改(无论是在基础架构、应用还是自定义数据级别进行的更改),都会通过一个特定的交付管道将其持续地应用到生产环境中。流程持续交付需要快速且自动地部署各种更改集。完成部署或交付工作需要多个步骤。标准的流程是:开发人员交付各种更改源代码控制工具进行构建工作运行自动的测试工作安装构建内容图 6 显示了持续交付流程。在计划好的时刻,启动 Jenkins 中的第一个项目。项目 1该项目中的首个任务是通过源代码管理工具(如 IBM® Rational Team
Concert™)下载源代码。如果项目失败,则会发送一个电子邮件通知,告知失败情况并且停止所有其他项目。如果项目成功完成,则会开始处理下一个项目。项目 2IBM® Security AppScan® 检查项目 1 中下载的源代码是否有安全性问题。项目 3AppScan 项目完成后,构建工作开始。项目 4成功构建完成后,下一个项目是在构建验证测试(Build Verification Test,BVT)环境中安装该构建版本。项目 5在 BVT 环境中运行 BVT 测试案例。如果 BVT 测试成功通过,那么 Jenkins 会开始在开发和测试环境(项目 6 和
7)中安装该构建版本。项目 6在开发环境中安装构建版本并发送电子邮件通知。项目在开发环境中安装构建版本并准备好环境,这样开发人员可执行集成工作或开发工作。项目 7在测试环境中安装构建版本。在测试环境中安装构建版本后,Jenkins 会触发项目 8,以便运行功能验证测试(Functional
Verification Test,FVT)。项目 8FVT 是一个自动测试列表,其中包括很多测试。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
设置持续交付框架。该框架可帮助开发人员和测试人员自动部署各种工作,节约其宝贵的时间。该框架还能帮助您尽早发现流程中的任何问题或缺陷。
参考资料 访问 。阅读 " ," (developerWorks,赵卓,2013 年 5
月)。了解 ,这是一个端到端的解决方案,并且其中的服务可让您快速交付各种创新想法。访问 ,获得关于 IBM Rational 软件交付平台(Rational
Software Delivery Platform)产品的技术资源和最佳实践。下载
试用版。试用 。下载产品试用版、在线试用产品、在云环境中使用产品。加入 社区,此社区面向对 DevOps 相关知识感兴趣的 IT
从业人员。加入 ,developerWorks 社区是一个面向全球 IT
专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。
developerWorks: 登录
标有星(*)号的字段是必填字段。
保持登录。
单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件。
在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。
所有提交的信息确保安全。
选择您的昵称
当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。
您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。
标有星(*)号的字段是必填字段。
(昵称长度在 3 至 31 个字符之间)
单击提交则表示您同意developerWorks 的条款和条件。 .
所有提交的信息确保安全。
文章、教程、演示,帮助您构建、部署和管理云应用。
立即加入来自 IBM 的专业 IT 社交网络。
免费下载、试用软件产品,构建应用并提升技能。
static.content.url=/developerworks/js/artrating/SITE_ID=10Zone=DevOps, RationalArticleID=1008645ArticleTitle=使用 Jenkins 设置一个持续交付框架publish-date=966,690 二月 独立访问用户
语言 & 开发
架构 & 设计
文化 & 方法
您目前处于:
用MSBuild和Jenkins搭建持续集成环境(2)
用MSBuild和Jenkins搭建持续集成环境(2)
日. 估计阅读时间:
注意: 挥一挥衣袖,带走满满干货,关注,时不时发福利呦!
相关厂商内容
相关赞助商
QCon北京-18日,北京&国家会议中心,
但Jenkins其实是一个非常灵活的工具,它可以结合各种版本管理系统和构建工具,用来构建任何类型的项目。在这篇文章中,我们会利用它的灵活性,从Mercurial中pull代码,用MSbuild构建项目。首先,我们需要下载并安装Jenkins,然后安装Mercurial和MSBuild插件。
配置Jenkins
从下载安装程序。它的Windows安装包很简单,会把Jenkins安装成Windows服务。Jenkins的默认的访问路径是,请确保8080端口不要被其他应用占用。
安装完毕以后就是装插件。请点击&Manage Jenkins&链接,然后再点击&Manage Plugins&。在&Available&标签页可以查看当前可安装的插件──你需要有一个能上网的环境,才能看到这一页的内容。用filter找到Mercurial和 MSBuild插件,点击插件名称前面的单选框,进行安装。你可以点击&Installed&标签页,来确保这两个插件已经被安装成功了。在安装过程中,你可能会看到提示信息说Jenkins需要重启才能完成安装,请让它重启,等重启完成后再访问&Installed&标签页,看看是不是安装成功。
Mercurial插件还需要做一些配置,才能让Jenkins找到Mercurial的安装路径。回到&Manage Jenkins&这一页上来,点击&Configure System&,找到&Mercurial&这一部分──如果你找不到&Mercurial&的话,就说明Mercurial插件没有装好──点击&Add Mercurial&按钮之后,你需要给这个Mercurial实例起个名字(自己用着越方便越好);还需要输入Mercurial可执行文件的安装路径,这里用的是hg.exe文件的所在目录;最后是可执行文件的名字,就用&INSTALLATION/hg.exe&就好,INSTALLATION这个单词会被前面输入的安装路径替换掉。
创建一个Jenkins Job
点击&Back to Dashboard&,回到Dashboard上来,然后点击&New Job&链接。你会看到一组job类型,选择&Build a free-style software project&,给它命名为&HelloCI-RunUnitTests&,点击OK。
下一步是job配置页面。这一页有很多配置项,而且大多数都带有详细的描述信息,点击右侧的帮助图标就可以看到。我们现在只配置两部分,一是代码库所在位置,二是如何用MSBuild构建项目。
找到&Source Code Management&,选择Mercurial。在&Mercurial Version&输入框中输入先前在&Configure System&中配置的Mercurial名称。然后在Repository URL中输入Mercurial版本库的URL(也可以是一个文件系统的路径)。最后在Branch中输入你想跟踪的分支名。
接下来到&Build&这部分。点击&Add build step&按钮后,下拉框中就会出现一系列的step类型以供选择,其中便包括&Build a Visual Studio project or solution using MSBuild&,如果你没看到这个选项,就说明MSBuild插件没有正确安装。
点击&Build a Visual Studio project or solution using MSBuild&之后,在&MSBuild Build File&输入框中输入构建脚本的名字:HelloCI.msbuild。我们想让Jenkins执行&RunUnitTests&这个Target ,如果你没有把DefaultTargets属性设成RunUnitTests的话,可以在&Command Line Arguments&中输入&/t:RunUnitTests&,其中/t是/target的简写。
点击&Save&或&Apply&保存之后,这个job一旦被触发,就可以pull代码下来,编译项目,执行单元测试。我们先来手工触发一次,看看配置是否正确。先回到Dashboard,这时可以在屏幕中央看到我们的job。点击job名字,然后在左侧的链接中找到&Build Now&链接,点击它,Jenkins就会开始执行。在这组链接的下方有一个&Build History&列表,它显示的是这个job的所有构建历史,当第一次构建开始运行的时候,你会在列表中看到一个进度条,同时还有一个小圆球显示构建状态。圆球闪烁表示构建正在进行中,它停止闪烁的时候一般会是红色或蓝色,红色表示构建失败,蓝色表示成功。
如果这个job能够访问Mercurial版本库,找到了HelloCI.msbuild脚本,&RunUnitTest&执行成功,这个圆球应该会变蓝。这时候你也就顺利完成了第一个Jenkins构建。如果构建失败,请点击&Build History&对应的编号查看详细信息,然后点击&Console Output&,就可以看到Jenkins所执行的每一个命令和对应结果,从中可以分析出构建失败的原因。
构建成功以后,下一步要做的就是让Jenkins检测版本库的变化,一旦有代码提交,Jenkins就要pull代码并执行构建。有好几种方法可以做到这一点。最简单的就是让Jenkins定时构建,但是如果在这一段时间内没有代码提交,这次构建反而是浪费。另一种方式是让Jenkins定时轮询,看看版本库中是否有代码提交。这种方法的缺点是当有了代码提交以后,Jenkins要等到下一个轮询周期才能执行构建。当然,你也可以让Jenkins每分钟都轮询一次,尽可能缩短等待时间,但我们还有另一种更优雅的方案──给Mercurial版本库中放一个post-commit的钩子,这样一旦版本库接受了新代码,它都会通知Jenkins,让它立刻开始构建。
这个方法需要在.hg目录下的配置文件中(.hgrc)添加一个钩子。在这个钩子里面,你需要让Mercurial访问下面这个网址:http://localhost:8080/job/JOBNAME/build?delay=0sec(JOBNAME需要替换成真实的job名称),让Jenkins启动构建。但不幸的是,Windows下没有类似Linux wget这样可以进行HTTP请求的工具。我自己写了行Ruby代码来做这项工作。你也可以用Powershell来创建一个System.Net.WebClient的实例,然后调用DownloadString方法。读者朋友可以自己完成这项工作,权当练习吧。
如果你不愿意用这个方法,就还用轮询吧。回到job配置页面,在&Build Trigger&区域选择&Poll SCM&,在&Schedule&输入框中输入轮询周期。它采用的语法格式是cron的风格。如果要每分钟轮询一次,就输入&1 * * * *&。你可以点击输入框右侧的帮助按钮,查看轮询周期的语法介绍。
构建流水线
Jenkins可以在某个构建成功结束之后启动其他job。于是就有了构建流水线,它的概念就是一个job成功之后触发其他job。触发者叫做上游job,被触发者被称作下游job。
构建流水线的应用场景有很多:让耗时较长的测试在单元测试结束之后执行;运行静态代码检查;把构建结果部署到试机环境(staging)或者产品环境中。我们下面来演示一下这个功能,让Jenkins在构建结束后启动web服务器,运行HelloCI这款应用。
我们只需要做三件事情:HelloCI-RunUnitTests job成功之后触发一个新job;把HelloCI-RunUnitTests的构建结果拷贝出来;启动web服务器。在开始之前,你还需要安装Copy Artifacts插件。回到Manage Plugins页面,参考之前安装Mercurial插件的方法安装Copy Artifacts。在看到重启的提示信息时重启Jenkins。
创建新job之前,我们需要告诉HelloCI-RunUnitTests job,让它把构建产物保存下来,以供新job使用。回到HelloCI-RunUnitTests job的配置界面,找到&Post-build Action&,选中&Archive the artifacts&,页面上就会出现一个文本框:&Files to archive&。我们要存档的目录有两份,一份是BuildArtifacts目录,一份是packages目录,后者是为了让我们能够访问NuGet package。如果要指定某个目录以及目录下所有内容,就需要在目录后面跟一个斜杠和两个星号。不同的目录或文件之间用逗号分割。在这里我们输入的是&BuildArtifacts/**,packages/**&。
现在创建一个新job,起名叫&HelloCI-StartWebServer&。在配置页面上&Build Triggers&那一节里选中&Build after other projects are built&,把之前那个job配置成要触发当前job的项目。
接下来给job添加一个build step,让这个job所做的第一件事情就是拷贝之前job所保存的构建产物。这里要用到&Copy artifacts from another project&这个step(它是由Copy Artifacts插件提供的)。我们只需要填入HelloCI-RunUnitTests job的名字就可以。
最后还要添加一个build step,让它启动web server。这里用的是&Execute Windows batch command&,我们用Visual Studio提供的Cassini来运行应用。Cassini可以在&C:\Program Files (x86)\Common Files\microsoft shared\DevServer\10.0\WebDev.WebServer40.EXE&找到。运行Cassini很简单,把web应用存放的路径作为参数传给它就行,如果没有指定端口号的话,它就会使用默认的端口号80。
&Execute Windows batch command&step需要一个可以在BuildArtifacts和packages拷贝后的目录下执行的命令。我们把下面这个命令复制到&Command&输入框中:
&C:\Program Files (x86)\Common Files\microsoft shared\DevServer\10.0\WebDev.WebServer40.
EXE& /port:9876 /path BuildArtifacts/_PublishedWebsites/HelloCI.Web/.
这个命令可以启动Cassini,把它指向拷贝过来的应用,然后在9876端口启动服务器。
所有的配置都已就绪。试着修改一下代码然后提交。Jenkins应该能够监听到变化,运行HelloCI-RunUnitTests。如果代码编译成功,所有测试均以通过,Jenkins应该开始运行HelloCI-StartWebServer job,把HelloCI-RunUnitTests的构建产物拷贝过来,在9876端口启动Cassini。如果这一切都运行无误,我们的持续集成系统就搭好了。
MSBuild和Jenkins可讲的地方还很多。比如说可以从持续集成走向持续部署。你所需要的只是一个job,让它把构建产物部署到生产环境(译者注:持续部署殊非易事,作者有些夸大其词,读者请勿轻信)。ASP.NET的应用就更简单了,用一个job把构建产物复制到某个目录下就行。这样一来,只要所有的测试全都通过,这个Jenkins job就可以把最新特性发布到生产环境上去。
如果你还没做好准备走那么远,也可以用一下Promoted Build plugin,它可以在某个构建达到了一个特定的标准之后,把它标记为&推荐使用&。一个人或几个人手工审核过一个构建,也算得是达到了推荐标准。有了Promoted Build plugin,人们做出的修改就可以自动发布到开发服务器上,所有的新功能都集中呈现。开发经理而后可以把某个特定的构建推荐到试机环境中。QA团队或其他干系人可以进行验收(其方式就是推荐试机环境上的构建),然后这个构建就可以由Jenkins部署到产品环境上。
John Ferguson Smart曾写过一本很出色的书,叫做&Jenkins: The Definitive Guide&。这本书除了讲述Jenkins的功能之外,还描述了怎么保证Jenkins的安全,怎样检测资源使用(如磁盘占用),怎样进行分布式构建,直到设置通知系统,让用户在构建开始、成功、失败的时候得到通知。这本书由O'Reilly出版,购买地址。如果你对Jenkins还不太了解的话,本书就属于必看的一本。
拥有一个自动化的构建部署系统,就跟要看重测试,要使用版本控制系统一样重要。我希望你已经熟练掌握了如何设置持续集成系统,可以开始着手集成自己的系统。
一开始不要太激进,一心想着把所有事情都做好。你可以一点一点来。你终会享受到胜利果实的。当Jenkins通知你某个构建失败的时候,你发现bug的时机就提前了;当你再也不用记忆每一步部署的操作时,你就有了一整套系统化的部署流程。而更重要的是,你有了更多时间去做更重要的事情,比如开发有价值的特性,或是为新项目做准备,也可以提前下班回家,再也不用为即将到来的上线担忧。
Mustafa Saeed Haji Ali居住在Somaliland的Hargeisa。他是个程序员,最常用的是ASP.NET MVC。Mustafa喜欢测试,喜欢用Javascript框架,如KnockoutJS、AngularJS、SignalR。他热衷于传播最佳实践。
查看英文原文:
Author Contacted
告诉我们您的想法
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
用MSBuild和Jenkins搭建持续集成环境(2)
你好,我在配置CopyArtifacts出现了错误,能否解决一下。
believe Wang
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
赞助商链接
InfoQ每周精要
通过个性化定制的新闻邮件、RSS Feeds和InfoQ业界邮件通知,保持您对感兴趣的社区内容的时刻关注。
架构 & 设计
文化 & 方法
<及所有内容,版权所有 &#169;
C4Media Inc.
服务器由 提供, 我们最信赖的ISP伙伴。
北京创新网媒广告有限公司
京ICP备号-7
注意:如果要修改您的邮箱,我们将会发送确认邮件到您原来的邮箱。
使用现有的公司名称
修改公司名称为:
公司性质:
使用现有的公司性质
修改公司性质为:
使用现有的公司规模
修改公司规模为:
使用现在的国家
使用现在的省份
Subscribe to our newsletter?
Subscribe to our industry email notices?
我们发现您在使用ad blocker。
我们理解您使用ad blocker的初衷,但为了保证InfoQ能够继续以免费方式为您服务,我们需要您的支持。InfoQ绝不会在未经您许可的情况下将您的数据提供给第三方。我们仅将其用于向读者发送相关广告内容。请您将InfoQ添加至白名单,感谢您的理解与支持。

我要回帖

更多关于 .net 持续集成工具 的文章

 

随机推荐