我刚刚在Nginx的反向代理后面设置Jenkins(最新的 - 2.5),以便我可以通过HTTPS访问它.
它正在工作,但是我的Multibranch Pipeline作业不再在主配置中有"Trigger Builds Remotes"选项.我认为我没有改变任何其他配置.任何想法发生了什么以及如何取回它?
这就是我想要的:
Mar*_*and 24
经过一段时间的搜索,我想我能够有信心地回答我自己的问题.
我相信答案在于安全设置.身份验证令牌的目的是允许未经授权的用户(开发人员)触发构建,而无需登录Jenkins(请参阅https://wiki.jenkins-ci.org/display/JENKINS/Authenticating+scripted+clients和https: //wiki.jenkins-ci.org/display/JENKINS/Quick+and+Simple+Security).
因此,如果您使用基于Matrix的安全性(在"配置全局安全性">>授权下),则"远程触发器构建"选项将消失,因为假定您将使用Jenkins用户帐户对请求进行身份验证.
为此,您可以使用用户名/密码(甚至更好的用户名/ API令牌)发出HTTP请求:
curl -X POST "https://username:api-token@JENKINS_URL/job/Example/build"
Run Code Online (Sandbox Code Playgroud)
VaL*_*VaL 16
在阅读这个答案之前,你必须知道我只是在这个答案中积累了所有有用的信息,我已经在stackoverflow中找到了,所有的信息应该是那些做过实际研究的人.
我将链接的内容从此注释移动到stackoverflow只是为了保留deadlink.
我的工作名称是Football.我还建议你创建一个专用的jenkins用户和密码,而不是admin:admin像我在这个例子中使用的那样.我的jenkins GUI URL http://192.168.99.20:8080就像我在流浪汉一样.
http://192.168.99.20:8080地址.Use the following URL to trigger build remotely: JENKINS_URL/job/Football/build?token=TOKEN_NAME or /buildWithParameters?token=TOKEN_NAME. Optionally append &cause=Cause+Text to provide text that will be included in the recorded build cause..http://192.168.99.20:8080地址.http://192.168.99.20:8080/user/admin/configure页面.admin:85703fb68927f04968630e192e4927cb有关更多信息,请访问远程访问API页面.
$ wget -q --auth-no-challenge --user admin --password admin --output-document - 'http://192.168.99.20:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'
Run Code Online (Sandbox Code Playgroud)
这会给你类似的东西Jenkins-Crumb:44e7033af70da95a47403c3bed5c10f8.如果没有crumb信息,运行curl命令将导致示例错误,如HTTP/1.1 403 Forbidden或Error 403 No valid crumb was included in the request.
$ curl -I -X POST http://admin:85703fb68927f04968630e192e4927cb@192.168.99.20:8080/job/Football/build -H "Jenkins-Crumb:44e7033af70da95a47403c3bed5c10f8"
HTTP/1.1 201 Created
Date: Fri, 02 Jun 2017 06:17:51 GMT
X-Content-Type-Options: nosniff
Location: http://192.168.99.20:8080/queue/item/17/
Content-Length: 0
Server: Jetty(9.2.z-SNAPSHOT)
Run Code Online (Sandbox Code Playgroud)
除了上面的信息,我还发现了如何cli从这个答案中获得Jenkins-Crumb
CRUMB=$(curl -s 'http://USER:TOKEN@localhost:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')
Run Code Online (Sandbox Code Playgroud)
有一个适用于 1.565.3 和更新版本的 Jenkins 插件,它可以绕过基于矩阵的身份验证来触发构建作业。我在Emil Dragu对JENKINS-17764(涵盖这个特定问题)的评论中发现了这一点:
安装Build Token Root Plugin,然后将 URL 的上半部分更改为下半部分(呈现为列表以使其更容易看到):
job/项目名称/build?token=测试buildByToken/build?job=项目名称&token=测试您仍然可以传递可选cause参数。