如何远程触发Jenkins multibranch管道项目构建?

时间:2016-09-14 12:11:57

标签: git jenkins githooks multibranch-pipeline

标题主要是说。如何从远程git存储库触发Jenkins multibranch管道项目构建?

“触发器远程构建”构建触发器选项似乎不起作用,因为没有保存您设置的令牌。

4 个答案:

答案 0 :(得分:15)

目前(Jenkins 2.22),“触发器远程构建”构建触发器选项在多分支管道作业配置中可见,但不起作用(如果您检查它并指定一个令牌,它会在保存之后重置)。根据{{​​3}},有意无法设置触发器,但它根本就是一个选项。

在同一个线程中,他们解释了如何为多分支管道项目中的每个单独项目(分支)触发构建。我需要的是一个动态设置,它适用于设置触发器后创建的分支,而不是线程中建议的端点(/job/project-name/job-name/build,应该是/job/job-name/project-name/build,因为项目是从我发现要使用的端点是/job/job-name/build。为了实现这一点,您必须创建一个带有API令牌的用户(转到管理Jenkins - >管理用户 - > Gear图标 - >显示API令牌),并在请求中将这些用作用户名和密码。

对于那些习惯使用Jenkins REST API的人来说,解决方案可能是显而易见的,但是当你不熟悉多分支管道项目和REST API时,明白这一点并没有什么坏处。

答案 1 :(得分:3)

我无法获得接受答案中描述的API令牌,因为即使我以管理员身份登录,也没有名为“管理用户”的链接。相反,我得到了Jenkins Wiki

中描述的令牌
  

您的个人配置页面中提供了API令牌。点击   您的名字在每个页面的右上角,然后单击   “配置”以查看您的API令牌

获得令牌后,以下curl请求将触发多分支管道的新构建(替换以$开头的占位符)

curl -X POST -u "$jenkins_username:$api_token" "http://$jenkins_url/job/$my-pipeline/job/$branch_name/build?token=BUILD_TOKEN"

备注

  1. 如果管道或分支名称包含特殊字符,则需要对其进行编码;例如,/变为%252F
  2. token查询参数是可选的。
  3. 此答案已在Jenkins v2.6中得到验证。

答案 2 :(得分:1)

在不禁用跨站点请求伪造(CSRF)保护的情况下,您可以使用的命令是

crumb=$(curl -s 'http://USERNAME:API_TOKEN@JENKINS_URL/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')
curl -X POST -H "$crumb" "http://USERNAME:API_TOKEN@JENKINS_URL/job/JOB_NAME/build"

将大写字母替换为适当的值。

答案 3 :(得分:0)

我刚刚克服了这个障碍,想​​分享我的笔记。

在我的配置(Jenkins 2.60.2)中,我无法远程启用触发器构建(例如,从脚本)选项,因为我只能查看配置"。这阻止了我通过发出HTTP GET到端点(/ job / project-name / job / job-name / build)来触发管道。

但是,我发现我总是可以通过发出HTTP POST来触发终点。

您必须在请求中提供有效的crumb或禁用"防止跨站点请求伪造攻击"配置全局安全性中的选项。

此致