【问题标题】:How to enable authentication while calling Hudson/Jenkins job remotely如何在远程调用 Hudson/Jenkins 作业时启用身份验证
【发布时间】:2019-03-21 10:16:47
【问题描述】:

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

我们目前使用的是 Hudson v3.0.1-b2 版本。

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

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

在我们使用的 Hudson 版本中,我们看不到在用户配置部分下为用户显示 API 令牌用户。请提出建议。

【问题讨论】:

    标签: jenkins jenkins-plugins hudson hudson-plugins


    【解决方案1】:

    使用参数启动构建:

    参数区分大小写!

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

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

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

    如果您使用授权令牌来触发构建(作业 -> 配置 -> '构建触发器' -> '远程触发构建(例如,从脚本)'),您可以访问: 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。 单击页面右侧的用户名(我的是管理员)。 选择“配置”选项将带您到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 和提供值为 Mexican 的参数 Type 触发 RevolutionTest 作业:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-21
      • 2019-09-25
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      相关资源
      最近更新 更多