【问题标题】:How to get the right build number for a build triggered in Jenkins by remote API如何为由远程 API 在 Jenkins 中触发的构建获取正确的构建号
【发布时间】:2018-08-01 17:13:51
【问题描述】:

我正在使用 Python 请求 http://jenkins:8080/view/projectAlpha/job/deploy_job_with_params/build 在 Jenkins 中触发带有参数的构建,但我没有得到任何队列或构建号来识别我的构建。

根据 Jenkins 的 /api 页面获取上述 url:

“要以编程方式安排新构建,请发布到此 URL(表示 /build url - RaamEEIL)。如果 build 有参数,发布到这个 URL(意味着 /buildWithParameters url - RaamEEIL)并提供参数为 表格数据。无论哪种方式,成功排队都会导致 201 带有 Location HTTP 标头的状态代码指向项目的 URL 队列。”

但是,我没有在部署构建时返回的位置标头中获取队列的 url(例如http://jenkins:8080/queue/item/21038/api/json),而是得到了 url http://jenkins:8080/view/projectAlpha/job/deploy_job_with_params/,所以基本上我没有得到任何队列号或内部版本号

我阅读了一个解决方法的建议,发送一个带有一些 id 的附加参数,我可以使用它来验证最新的构建是我的构建,或者使用它来搜索构建列表,直到找到正确的构建。

谢谢。

【问题讨论】:

    标签: python api jenkins


    【解决方案1】:

    好吧,事实证明我把事情搞混了。这似乎发生在许多其他人身上,所以这里有一些信息。

    /build url - 返回 location = 作业的 url。不包含有关您的构建的信息

    /buildWithParameters url - 返回 location = 您构建的队列项的 url

    根据 Daniel Beck 对https://issues.jenkins-ci.org/browse/JENKINS-30317 的评论——

    (作者的“This”是指/build url)

    这就是问题所在。这实际上不是 API。正如我之前写的, 记录的 API 使用 /buildWithParameters 进行参数化 构建。这是在伪装成网络浏览器。

    ...因为网络浏览器会被重定向 到空白的 404 错误页面。同样,您实际上并没有使用 API 在这里,你假装自己是一个网络浏览器。

    因此,尽管 API 页面声明您可以请求 /build url,但如果您想获取构建的队列项 url 作为“位置”标头,则必须请求 /buildWithParameters url。

    【讨论】:

      猜你喜欢
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      • 2013-12-20
      • 2021-02-05
      相关资源
      最近更新 更多