您的位置:首页 > 编程语言

【Jenkins系列之二】利用Jenkins+Github进行自动化测试的步骤

2015-02-02 17:39 393 查看
上一篇文章中,我们已经搭建了jenkins的持续集成环境,本文将指导我们如何利用jenkins进行持续集成。我们要达到这样的效果:在向位于Github 的项目 push 代码时,Jenkins 自动获取最新的代码并执行测试,并将测试结果通过Email通知我们。

1、安装与设置Git

首先,执行构建的机器要安装Git以便于从Github上下载代码。安装与设置方法参考:/article/1991377.html

其次,在Jenkins中指定Git的安装路径。方法是:进入Jenkins首页,点击系统管理,点击系统设置,在弹出的页面上,在Path to Git executable位置上输入:“C:\Program Files (x86)\Git\cmd\git.exe”



2、新建JOB

在Jenkins首页点击“新建”,进入到新建JOB的页面。输入JOB名称,并选择“构建一个自由风格的软件项目”。点击OK。

按照下面的步骤进行设置:
a、Restrict where this project can be run: 用来指定这个Job在哪个node上执行。这里要填写node名称(注意一定是名称)。这里我们选择master节点,也就是运行jenkins服务器的机器。



b、源码管理:选择Git,输入Github上对应项目的Repository URL,例如我的是:git@github.com:liuchunming033/build.git,当进行构建时,jenkins会去该url获取你的代码到当前workspace。Credential这里点击Add,并且选择“SSH
Username with private key”(我选择过其他的方式,好像只有这种方式才能从github上下载代码),将“安装与设置Git”这一节的private key粘贴到Private Key文本框中。



还可以选择git仓库的branch。



c、构建:我们要增加构建步骤-Execute Windows batch command,这里填写执行构建的脚本命令。因为我是做测试工作的,这里填写执行测试脚本的命令:python .\unit.py

点击保存。

【注意】

要想让测试能在slave节点运行成功,要在slave上进行必要的测试环境的设置。比如我的工作中的测试使用python来写的,那么在运行测试的机器上就要安装python环境。

3、手动触发构建

进入JOB页面,点击左侧的“立即构建”就可以进行一次构建,这是手动触发构建。构建的代替步骤应该是首先从Gtihub上clone最新的代码到当前JOB的工作空间中,也就是workspace中。

构建完成后,可以看到Github上的代码已经下载到了JOB的工作空间中。



当构建完成后,可以查看本次构建的控制台输出,应该类似下面这样:

Started by user anonymous
Building on master in workspace C:\Program Files (x86)\Jenkins\jobs\PythonRun\workspace
Cloning the remote Git repository
Cloning repository git@github.com:liuchunming033/build.git
 > C:\Program Files (x86)\Git\cmd\git.exe init C:\Program Files (x86)\Jenkins\jobs\PythonRun\workspace # timeout=10
Fetching upstream changes from git@github.com:liuchunming033/build.git
 > C:\Program Files (x86)\Git\cmd\git.exe --version # timeout=10
using GIT_SSH to set credentials 
 > C:\Program Files (x86)\Git\cmd\git.exe -c core.askpass=true fetch --tags --progress git@github.com:liuchunming033/build.git +refs/heads/*:refs/remotes/origin/*
 > C:\Program Files (x86)\Git\cmd\git.exe config remote.origin.url git@github.com:liuchunming033/build.git # timeout=10
 > C:\Program Files (x86)\Git\cmd\git.exe config remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
 > C:\Program Files (x86)\Git\cmd\git.exe config remote.origin.url git@github.com:liuchunming033/build.git # timeout=10
Fetching upstream changes from git@github.com:liuchunming033/build.git
using GIT_SSH to set credentials 
 > C:\Program Files (x86)\Git\cmd\git.exe -c core.askpass=true fetch --tags --progress git@github.com:liuchunming033/build.git +refs/heads/*:refs/remotes/origin/*
 > C:\Program Files (x86)\Git\cmd\git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
 > C:\Program Files (x86)\Git\cmd\git.exe rev-parse "refs/remotes/origin/origin/master^{commit}" # timeout=10
Checking out Revision 5cccefe3d4a755e97e04dac7f901009f0ddc41d3 (refs/remotes/origin/master)
 > C:\Program Files (x86)\Git\cmd\git.exe config core.sparsecheckout # timeout=10
 > C:\Program Files (x86)\Git\cmd\git.exe checkout -f 5cccefe3d4a755e97e04dac7f901009f0ddc41d3
 > C:\Program Files (x86)\Git\cmd\git.exe rev-list 5cccefe3d4a755e97e04dac7f901009f0ddc41d3 # timeout=10
[workspace] $ cmd /c call C:\Windows\TEMP\hudson1838296705227589066.bat

C:\Program Files (x86)\Jenkins\jobs\PythonRun\workspace>python .\unit.py 
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s

OK

C:\Program Files (x86)\Jenkins\jobs\PythonRun\workspace>exit 0 
Finished: SUCCESS


4、自动触发构建

4.1 push 代码时自动触发测试

现在我们已经可以手动触发持续集成来运行测试了,下面配置在 push 代码时自动触发测试。

在JOB设置页面中的“构建触发器”区域,勾选"Build when a change is pushed to GitHub "和"Poll SCM ",这两项的作用分别是当GitHub有版本库更新时触发Jenkins进行构建和定期检查版本库是否有更新,如果有更新则触发Jenkins进行构建。这里要注意Schedule语法,例如“H/2 * * * *”表示每隔2分钟检查一次。



这样,当我们修改本地的测试脚本unit.py,并且commit到本地并且push到Github上之后,过2分钟就会自动触发Jenkins进行测试。

测试完成之后,进入到最新的一次构建中查看构建结果如下图,从图中可以看到本次的构建是由于SCM change导致的,并且changes的具体信息看到是进行了一次“add email address”的commit操作。



4.2 周期性触发测试

有的时候,我们可能需要周期性的运行测试。比如,我们的测试执行完成一轮需要30分钟,我们可以设置每隔1小时执行一轮,这样在晚上让jekins运行测试的时候,一个晚上就可以多执行几轮。如果我们想每隔2分钟执行一次,可以像下图这样设置。



4.3 其他JOB触发测试

Jenkins允许当其他的job完成后,执行当前的job,这个功能对于测试工程师非常用。我们可以将测试之前的环境部署设置为一个叫作prepareenv 的JOB,只有当这个job完成,即环境搭建完成,才执行测试的job。这种情况下,我们可以在构建触发器的时候选择Build after other projects are built,并设置需要所依赖的JOB。



5、构建后的操作

有时,我们希望当构建失败的时候,让Jenkins发送Email告知我们。邮件的内容就是构建时候的控制台输出。

5.1、配置邮件通知

从Jenkins首页进入到系统管理-->系统设置,在“邮件通知”区域,输入SMTP服务器地址,以Gmail为例: SMTP server 输入
smtp.gmail.com
,点击Advanced…, 勾选Use SMTP Authentication,User Name 和Password 输入 Gmail 邮箱地址和密码。 然后可以勾选Test configuration by sending test
e-mail 并填写自己的Email地址再点Test configuraton 进行测试, 如果可以收到测试邮件则说明配置成功。然后点击页面底部的Save。



接下来进入Job页面,点击 Configure 进入Job的配置页面,在最下面的 Add post-build action 选择E-mail Notification,然后在Recipients 输入接收通知邮件的邮箱地址,多个地址之间用英文空格隔开 (建议使用邮件列表地址)。



5.2 Jekins生成测试报告

首先,我们需要生成一个Jekins能够读懂的测试报告,如果使用pytest执行测试,那么我们需要生成这样执行测试:

py.test --junitxml results.xml tests.py
这样就会在该项目的workspace的根目录下生成一个叫result.xml报告。

接着,在下面的“构建后操作”中,点击“Add post-build action”按钮,在列表中选择“Publish JUnit test result report”。由于我们的报告是输出到job根路径下,所以我们这里直接填写XML文件名。如下图所示。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: