Jenkins持续集成学习-Windows环境进行.Net开发3 (2)

28.PNG

自动触发构建

SVN自动触发构建一共有3种方式。

分别为Jenkins定时轮询触发。

SVN客户端创建钩子触发。

SVN服务器端创建钩子触发。

Jenkins定时轮询触发

Jenkins定时轮询触发是使用Jenkins 轮询SCM功能定时检查SVN是否有变更触发构建。

Jenkins的轮询SCM的说明上提到该功能需要扫描整个Jenkins工作区并验证,操作性能要求比较高。我们依然验证一下这个功能。

在配置Build Triggers选项中勾选轮询SCM,在Schedule输入 * * * * *表示每分钟轮询一次,即代码提交后1分钟触发构建。

1.png

设置完之后我们提交代码就会自动构建了。相比手动构建,自动构建左边菜单栏会显示轮询日志,右边会显示由SCM变更启动,表明是轮询SCM触发的构建。

2.png

SVN客户端钩子触发

SVN客户端钩子触发是在本地提交的时候执行本地的Post-Commit钩子,通过这个钩子执行脚本使用http请求调用jenkins的远程构建接口。

生成用户授权Token

在系统配置-管理用户-用户-配置的API TOKEN点击生成新的Token按钮,创建一个token。我们需要根据这个token来获取权限。

10.png

增加项目授权token

在项目的配置中修改Build Triggers,勾选Trigger builds remotely支持触发远程构建。在Authentication Token输入一个自定义的串,我们可以使用JENKINS_URL/job/JOB_NAME/build?token=TOKEN_NAME来远程构建项目。比如我们当前项目可以使用:8080/job/unittest/build?token=123远程构建

11.PNG

创建客户端钩子脚本

20.PNG

创建一个bat脚本。命名为post-commit-unittest.bat,我们在这个脚本里写入参数,将真正执行通知的脚本分离出来,这就可以重用了。

SET CSCRIPT=%windir%\system32\cscript.exe SET VBSCRIPT=F:\Repositories\JenkinsTest\hooks\post-commit-hook-jenkins.vbs SET JENKINS=http://127.0.0.1:8080/ SET JOBNAME="unittest" SET TOKEN="123" REM AUTHORIZATION: Set to "" for anonymous acceess REM AUTHORIZATION: Set to encoded Base64 string, generated from "user_id:api_token" REM found on Jenkins under "user/configure/API token" REM User needs "Job/Read" permission on Jenkins REM AUTHORIZATION=base64(test:1184023ac835f44484f52316235a033db8) SET AUTHORIZATION="dGVzdDoxMTg0MDIzYWM4MzVmNDQ0ODRmNTIzMTYyMzVhMDMzZGI4" "%CSCRIPT%" "%VBSCRIPT%" %JENKINS% %JOBNAME% %TOKEN% %AUTHORIZATION%

SVN调用脚本会传入3个参数

1. 当前项目的SVN仓库地址 2. 当前的版本号 3. 事务名称

这里暂时不需要用到。

通过CScript.exe调用执行vbs脚本。

CScript.exe是Windows脚本宿主的一个版本,可以用来从命令行运行脚本。

通知脚本参数说明

1. CSCRIPT:CScript.exe的路径。 2. VBSCRIPT:同时jenkins的脚本路径。 3. JENKINS:jenkins服务地址。 4. JOBNAME:项目名称。 5. TOKEN:项目的Token。 6. AUTHORIZATION:用于授权token。

AUTHORIZATION值为base64(user_id:api_token)

设置钩子

在SVN客户端的设置中找到钩子脚本,点击添加。

7.PNG


设置路径和脚本路径,注意左下角两项勾起来。

8.png

21.PNG

创建通知脚本

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zygypw.html