标题已经说得很清楚了。如何从远程git仓库触发Jenkins多分支流水线项目的构建?
"远程触发构建"构建触发选项似乎不起作用,因为您设置的任何令牌都没有保存。
标题已经说得很清楚了。如何从远程git仓库触发Jenkins多分支流水线项目的构建?
"远程触发构建"构建触发选项似乎不起作用,因为您设置的任何令牌都没有保存。
目前(Jenkins 2.22),在多分支流水线作业配置中,“远程触发构建”选项是可见的,但不起作用(如果您勾选它并指定令牌,保存后会被重置)。根据这个问题,故意禁止设置触发器,但出现为选项是一个错误。
在同一讨论串中,他们解释了如何在多分支流水线项目中触发每个单独项目(分支)的构建。我所需要的是一个动态设置,可以适用于在设置触发器之后创建的分支。因此,与该线程中建议的端点(/job/project-name/job-name/build
,应改为/job/job-name/project-name/build
,因为项目是从作业中的分支创建的)不同,我发现要使用的端点是/job/job-name/build
。为了使其工作,您必须创建一个带有API令牌的用户(转到“管理Jenkins->管理用户->齿轮图标->显示API令牌”),并在请求中使用这些作为用户名和密码。
对于那些习惯于使用Jenkins REST API工作的人来说,解决方案可能很显然,但对于既不熟悉多分支流水线项目也不了解REST API的新手来说,详细说明并不会有害。
API令牌可在您的个人配置页面中找到。在每个页面的右上角单击您的名称,然后单击“配置”以查看您的API令牌。
有了令牌后,下面的curl请求将触发多分支流水线的新构建(替换以$
开头的占位符)。
curl -X POST -u "$jenkins_username:$api_token" "http://$jenkins_url/job/$my-pipeline/job/$branch_name/build?token=BUILD_TOKEN"
注意事项:
/
变成%252F
。token
查询参数是可选的。如果不禁用跨站请求伪造(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"
将大写字母替换为相应的值。
我最近刚刚克服了这个障碍,想要分享我的笔记。
在我的配置中(Jenkins 2.60.2),由于我只能“查看配置”,所以无法启用远程触发构建(例如从脚本)选项。这阻止了我通过向端点(/job/project-name/job/job-name/build)发出HTTP GET来触发流水线。
然而,我发现我总是可以通过向端点发出HTTP POST来触发。
您将需要在请求中提供有效的crumb或在“配置全局安全性”中禁用“防止跨站点请求伪造攻击”选项。
此致