【Jenkins系列之二】利用Jenkins+Github进行自动化测试的步骤
上一篇文章中,我们已经搭建了jenkins的持续集成环境,本文将指导我们如何利用jenkins进行自动化构建。新建JOB在Jenkins首页点击“新建”,进入到新建JOB的页面。这里我们先选择“构建一个自由风格的软件项目”。“构建一个多配置项目”一般在我们想把测试代码在多个不同配置的slave上执行时选用。点击“OK”进入到JOB的设置页面。按照下面的步骤进行设置:a、Rest
上一篇文章中,我们已经搭建了jenkins的持续集成环境,本文将指导我们如何利用jenkins进行持续集成。我们要达到这样的效果:在向位于Github 的项目 push 代码时,Jenkins 自动获取最新的代码并执行测试,并将测试结果通过Email通知我们。
1、安装与设置Git
首先,执行构建的机器要安装Git以便于从Github上下载代码。安装与设置方法参考:http://blog.csdn.net/liuchunming033/article/details/40862011
其次,在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触发测试
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能够读懂的测试报告,安装JUnit Plugin插件后,Jenkins能够解析xml格式的测试报告,在测试完成后解析xml报告生成可读性形式。
如果使用pytest执行测试,可以按下面形式生成xml格式的报告:
py.test --junitxml results.xml tests.py
这样就会在该项目的workspace的根目录下生成一个叫result.xml报告。
接着,在下面的“构建后操作”中,点击“Add post-build action”按钮,在列表中选择“Publish JUnit test result report”。由于我们的报告是输出到job根路径下,所以我们这里直接填写XML文件名。如下图所示。
这样,在测试完成后,就可以看到 Test result。
更多推荐
所有评论(0)