jenkins设置远程触发构建

触发构建有多种方式,今天主要记录,远程触发构建和轮询SCM。

一 远程触发构建

Build Triggers中的Trigger builds remotely即远程触发构建,选中后提示信息中会提示一个地址“JENKINS_URL/me/my-views/view/all/job/CITest/build?token=TOKEN_NAME”,其中的JENKINS_URL即jenkins的访问地址,如http://127.0.0.1:8080/jenkins/,末尾token=TOKEN_NAME即设置的用户令牌(请求中需要用到该值)。

文本框中输入该用户的API_TOKEN_NAME-自定义(token生成方法:在 people中点击当前登陆用户-确定该用户可以执行目标job,点击configure,API Token项,如果没有,则点击API Token生成)

如何触发构建:如在shell中访问该地址,可以借助网络工具curl或者在浏览器中访问

如:GET http://127.0.0.1:8080/jenkins/job/CITest/build?token=jenkinstoken

掌握了此触发机制,可以将该请求集成到其他系统中进行持续集成。

 

二 轮询SCM,结合SVN实现提交后自动触发job 

Build Triggers中的轮询SCM,需要配合svn的hook机制,在hook脚本中访问该url,进行jenkins任务触发。

结合svn的hook使用步骤:

1 在jenkins中下载jenkins-cli.jar包(http://jenkins_url:port/jenkins/jnlpJars/jenkins-cli.jar)-- 使用cli工具,需要打开相应设置,jenkins-->系统管理-->Configure Global Security-->勾选启用安全->TCP port for JNLP agents选择随机端口或者指定端口均可以。

2 将jenkins-cli.jar放到svn服务器中,确保有执行权限

3 在svn对应仓库的hooks目录下找到对应的脚本,post-commit.tmpl,去掉.tmpl后缀,修改脚本内容,使用jenkins-cli.jar执行命令:

#!/bin/bash

source /etc/profile

java -jar /root/jenkins-cli.jar -s http://47.104.77.127:8080/jenkins/ -auth JENKINS_USERNAME:JENKINS_PASSWORD build JENKINS_JOB

4 保存后,在svn中提交代码,查看是否触发了jenkins任务

 

附:

svn的hook介绍:

svn的hook机制:hook即钩子,用户在管理数据仓库的时候,当特定的事件发生时,相应的hook会被调用,hook 其实就相当于特定事件的处理函数。

当前 Subversion 提供了5种可以安装的 hook :

事件名

时机

与hook交互

一般用途

start-commit

事务创建之前。

传给 hook 的 参数:

-         参 数 1 , 代码库路径。

-         参 数 2 , 试图提交的用户名。

hook 的返回值:非 0 则 终止。

判断用户是否有权限进行提交 操作。

pre-commit

事务完成,但未提交。

-         参 数 1 , 代码库路径。

-         参 数 2 , 事务名。

hook 的返回值:非 0 则 终止提交,操作回滚。

对提交内容进行检查。如要求 提交必须填写提交信息。

post-commit

事务提交完毕,新的修订版被 创建。

传给 hook 的 参数:

-         参 数 1 , 代码库路径。

-         参 数 2 , 刚创建的修订版号。

hook 的返回值被忽 略。

发送邮件通知,或备份代码 库。

pre-revprop-change

修改修订版属性(如提交时提 供的信息 message )之前。

由于修订版属性一旦修改就会 永久的丢失,除非安装这个事件的 hook, subversion 的 客户端不允许远程修改修订版属性。

传给 hook 的 参数:

-         参 数 1 , 代码库路径。

-         参 数 2 , 要修改的修订版号。

-         参 数 3 , 操作用户名。

-         要 修改的属性。

hook 的返回值:非 0 则 终止。

保存修订版属性的改变记录。

post-revprop-change

修订版属性值被修改之后。

如果没有安装 pre-revprop-change的 hook , 这个事件的 hook 不会被执行。

传给 hook 的 参数:

-         参 数 1 , 代码库路径。

-         参 数 2 , 要修改的修订版号。

-         参 数 3 , 操作用户名。

-         要 修改的属性。

hook 的返回值被忽 略。

发送邮件通知。

在当前仓库下面的hook目录,都会存在相应hook文件的模板,要让相应hook文件起作用,就必须复制当前模板并去掉后面的.tmpl,然后编写相应的逻辑。

posted @ 2019-03-30 14:23  battlefront  阅读(5275)  评论(0编辑  收藏  举报