如何在远程调用Hudson / Jenkins作业时启用身份验证

时间:2019-03-21 10:16:47

标签: jenkins jenkins-plugins hudson hudson-plugins

如何在远程调用Hudson / Jenkins作业时启用身份验证?

我们当前正在使用Hudson v3.0.1-b2版本。

我们使用Hudson rest api远程调用Hudson作业以开始构建。

我们现在要在远程调用Hudson作业时启用身份验证。在线阅读有一种方法可以为用户生成API令牌,并在远程调用Hudson作业时使用该令牌。

在我们使用的Hudson版本中,在“用户配置”部分下没有看到该用户的show API令牌用户。请提出建议。

enter image description here

1 个答案:

答案 0 :(得分:0)

使用参数启动构建:

参数区分大小写!

通过URL传递参数时,大小写很重要!例如,如果作业将参数定义为Message,则token = TOKEN&MESSAGE = yo将不起作用。

仅通过POST即可开始构建 http://server/job/myjob/buildWithParameters?PARAMETER=Value 所有参数都必须正确转义URL。要与wget一起使用,也请在命令行上引用URL。

可以添加参数delay = 0sec以立即开始构建。 要使用运行参数,该值的格式应为jobname#buildNumber(例如,对于foo-job#99,应为“&MyRunParam = foo-job%2399”)

如果您使用授权令牌来触发构建(作业->配置->“构建触发器”->“触发远程构建(例如,从脚本生成)”),则可以访问: http://server/job/myjob/buildWithParameters?token=TOKEN&PARAMETER=Value (请注意,如果使用Unix Shell脚本,则必须对&进行转义,或引用整个URL。)


如果您使用的是基于矩阵的安全性(在“配置全局安全性” >>“授权”下),则“触发远程构建”选项将消失,因为假定您将使用Jenkins用户帐户对请求进行身份验证。

为此,您可以使用用户名/密码(甚至更好的用户名/ API令牌)发出HTTP请求:

curl -X POST“ https://username:api-token@JENKINS_URL/job/Example/build

获取API用户和令牌:

使用http://192.168.99.20:8080地址登录jenkins。 点击页面右侧的用户名(我的用户名为admin)。 选择“配置”选项,这将带您进入http://192.168.99.20:8080/user/admin/configure页。 在“ API令牌”部分中,单击“显示API令牌”按钮。 请注意,稍后将在curl命令中使用“用户ID”和“ API令牌”。例如管理员:85703fb68927f04968630e192e4927cb


如果以上都不是解决问题的方法,则可以尝试以下插件:https://wiki.jenkins.io/display/JENKINS/Build+Token+Root+Plugin

示例:

使用令牌TacoTuesday触发RevolutionTest作业:

buildByToken/build?job=RevolutionTest&token=TacoTuesday

使用令牌TacoTuesday和参数Type附带值墨西哥来触发RevolutionTest作业:

buildByToken/buildWithParameters?job=RevolutionTest&token=TacoTuesday&Type=Mexican