gpt4 book ai didi

jenkins - 检索远程触发的 Jenkins 作业的ID

转载 作者:行者123 更新时间:2023-12-03 00:22:57 25 4
gpt4 key购买 nike

我通过 http POST 请求从 jenkins 外部触发参数化 Jenkins:

我在作业配置中启用了可以从外部触发作业的功能,并且我可以通过向 jenkins 发送包含如下内容的请求来真正触发它:

发布
http://myJenkins.com/myJob/buildWithParameters?token=MYTOKEN参数:SCREEN_SIZE:27

触发作业创建会返回成功的 201 CREATED http 响应。

我的问题是我不知道创建的构建作业的 ID。我想监控工作的状态。为了做到这一点,我需要知道 id。否则,如果我只采用该工作的最新版本,我可能会采取错误的工作。

有没有可靠的方法来获取创建的作业的ID?

最佳答案

自 Jenkins 1.519 起,将构建加入队列会在 Location 中使用 URL 进行响应,将您指向构建队列中的某个项目:

$ nc localhost 8666
POST /jenkins/job/morgRemote/buildWithParameters?jenkins_status=1&jenkins_sleep=20&token=morgRemote HTTP/1.1
Host: localhost:8666

HTTP/1.1 201 Created
Location: http://localhost:8666/jenkins/queue/item/39/
Content-Length: 0
Server: Jetty(winstone-2.8)

现在,如果您将 api/json (或 api/xml 等)添加到其末尾(因此在本例中它将是 http//localhost:8666/jenkins/queue/item/39/api/json) 然后你将得到一个包含给定作业的构建 ID 的文档。对于 json,检索到的对象具有 executable 属性,该属性又具有 numberurl 属性。 number 是给定作业的构建 ID(此处为 35),url 是 jenkins 构建页面 url。

{
"actions" : [
{
"parameters" : [
{
"name" : "jenkins_status",
"value" : "1"
},
{
"name" : "jenkins_sleep",
"value" : "20"
}
]
},
{
"causes" : [
{
"shortDescription" : "Started by remote host 127.0.0.1",
"addr" : "127.0.0.1",
"note" : null
}
]
}
],
"blocked" : false,
"buildable" : false,
"id" : 39,
"inQueueSince" : 1423993879845,
"params" : "\njenkins_status=1\njenkins_sleep=20",
"stuck" : false,
"task" : {
"name" : "morgRemote",
"url" : "http://localhost:8666/jenkins/job/morgRemote/",
"color" : "red"
},
"url" : "queue/item/39/",
"why" : null,
"cancelled" : false,
"executable" : {
"number" : 35,
"url" : "http://localhost:8666/jenkins/job/morgRemote/35/"
}
}

注意两件事:

  • 构建队列中的非事件项目将在几分钟后被垃圾回收,因此您应该尽快检索构建 ID
  • 默认情况下,将项目添加到队列中直到获得构建 ID 需要几秒钟的时间。在此期间,executablecanceled 属性将丢失,并且 why 不为 null。您可以在作业配置的“高级项目选项”中通过修改“安静期”设置或在 jenkins 全局配置中更改此行为。

:

  ...
"url" : "queue/item/39/",
"why" : "In the quiet period. Expires in 2.4 sec",
"timestamp" : 1423993879845
}

关于jenkins - 检索远程触发的 Jenkins 作业的ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24507262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com