基于Jenkins的持续集成

Jenkins是一个持续集成工具,前身叫做Hudson,在实际项目应用中非常重要,本文介绍这一工具的使用方法。

首先我们访问Jenkins的网站:

基于Jenkins的持续集成

Jenkins 的网址是: http://jenkins-ci.org/

从网站下载Jenkins: http://mirrors.jenkins-ci.org/war/latest/jenkins.war

可以看到jenkins的发布形式非常简单,就是一个war。运行Jenkins也十分简单:

java -jar jenkins.war


启动时日志输出如下:

Running from: /Users/weli/Downloads/jenkins.war
webroot: $user.home/.jenkins
...
INFO: Jenkins is fully up and running


从日志中可以看到jenkins会把配置文件和数据保存在$user.home/.jenkins当中。此时我们访问Jenkins的HTTP服务页面:

http://127.0.0.1:8080


此时进入界面会发现Jenkins正在初始化,稍等片刻后,就可以看到主界面:

基于Jenkins的持续集成

从上图中可以看到,左侧有New Job可以新建任务。Jenkins的设计思路比较贴近于Linux下面的cron:我们都知道,cron允许我们将一个任务按一定的时间周期去执行。对于cron来讲,任务的触发条件就是时间。而Jenkins将这一思路加以扩展,把触发条件这一块大大加强了。比如Jenkins允许我们以代码库中的代码提交为触发条件,去执行任务。并且支持用户自己去写代码,写插件,去扩展各种需要的触发条件。

我们现在可以创建一个任务试试看:

基于Jenkins的持续集成

可以看到,Jenkins默认支持我们创建多种任务。我们选择第一种,即:

Build a free-style software project


并将Job名命令为TEST:

基于Jenkins的持续集成

在指定触发条件时,可以看到Jenkins默认支持多种触发条件,其中 "Build periodically" 就是类似于cron的按时间触发,而Poll SCM则是允许用户让Jenkins定期查询某一个项目的代码库,如果有代码变动则触发执行定义的任务:



当然,如果要使用Poll SCM的方式来执行任务,则需要在Jenkins中配置一个项目代码库所在的位置。在TEST任务中,我们将需求砍到最简,既不准备指定一个特定的项目,更不存在项目的代码库,我们只准备让Jenkins帮我们执行一行Linux命令ls。此外,在我们的TEST任务中, 我们也不指定任务触发条件,这样的情况下,这个任务就是手工触发的,只有我们让它执行,它才执行。

接下来我们配置要执行的任务:

基于Jenkins的持续集成

我们在TEST任务中使用Execute Shell,即我们的任务是要执行脚本:

基于Jenkins的持续集成

我们的任务非常简单:让Jenkins执行ls命令,没有触发条件,我们手工执行。保存这个任务,试着执行它:


基于Jenkins的持续集成

看到左边有个'Build Now',这就是手工执行这个任务的链接。执行完成后,会出现结果:



蓝灯代表着任务正确完成。Jenkins判断任务是否正常完成的逻辑很明确:对于执行脚本而言,返回值为0代表任务正常完成。对于Jenkins支持的其它Jobs类型,比如Maven任务,Jenkins会有更为细节的绑定,比如会检查到mvn在执行任务时是否成功,单元测试是否通过,等。

下面是我们任务的执行结果:

基于Jenkins的持续集成

注意到左边有"Console Output",里面有我们的任务执行的详细日志。这就是Jenkins提供的另一个核心价值:任务执行过程可审计。

相信读完本文,你已经对Jenkins是一个什么样的工具,它的用法都已经有所了解。接下来就是深入使用它,让它在你的项目中充分发挥价值。

你可能感兴趣的:(Jenkins,单元测试,hudson)