检索远程触发的詹金斯工作的ID

尼莫

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

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

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

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

我的问题是我不知道所创建的构建作业的ID。我想监视工作状态。为了做到这一点,我需要知道的ID。否则,如果我只是接受这份工作的最新版本,那我可能会接受错误的工作。

是否有可靠的方法来获取所创建作业的ID?

汉普森

更新:

其他的答案矿后〜8月加入。我当时不知道响应中的位置标头。在某些情况下,这确实是一个不错的选择。就是说,根据答案和评论中的警告(尤其是关于参数化构建),该答案似乎在某些情况下仍具有一定的实用性。

原始答案:

不幸的是,他们并没有使事情变得如此简单。也就是说,例如,返回带有ID之类的信息JSON响应

但是,我相信一个可靠的解决方法(虽然肯定是不平凡的)是利用您用于触发构建的URL中cause参数,并在该原因中添加唯一的文本,您可以稍后对其进行分析以确定您从您的自动化触发了它。

为了进一步使特定作业具有唯一性,即使是在自动化的情况下,多个作业同时运行,也要在cause参数内包括某种类型唯一ID(可能只是RDBMS或类似的序列ID )。

然后,您可以使用JSON API获取有关您要远程触发作业的信息再说一次,它是间接的,但是可行的:

命中以下形式的URL:

http://<server>:<port>/job/<jobname>/lastBuild/api/json

您可以?pretty=true在浏览器中添加漂亮的打印效果,以提高人类可读性。

这将为您提供上一版本JSON它将包含的原因的内部属性的行为属性,并在那里(在另一个嵌套命名属性SHORTDESCRIPTION),你会发现事业参数你补充说,如果这是你触发的构建之一。

您可以同时解析特殊的静态文本和生成的ID,以查看它们是否匹配。如果这样做的话,那么您也可以JSON中获取Jenkins id(搜索buildNumber,它是嵌套的)。

如果该构建不是完全由自动化触发的,或者根本不是由您的自动化触发的,但是ID不匹配,则可以对N-1构建重复该过程,直到找到所需的内容。

JSON将采用以下形式:

http://<server>:<port>/job/<jobname>/<buildNumber>/api/json

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

检索远程触发的詹金斯工作的ID

来自分类Dev

在詹金斯远程触发构建

来自分类Dev

从詹金斯的子工作中检索变量

来自分类Dev

git钩子触发詹金斯工作不起作用

来自分类Dev

Gerrit不会触发我的詹金斯工作

来自分类Dev

如何使用ajax触发詹金斯的工作机会?

来自分类Dev

詹金斯下游工作没有触发

来自分类Dev

Gerrit不会触发我的詹金斯工作

来自分类Dev

詹金斯工作的外部触发器

来自分类Dev

詹金斯预定的工作

来自分类Dev

詹金斯建立触发方式

来自分类Dev

詹金斯(Jenkins)的工作计划触发器经常触发

来自分类Dev

詹金斯没有触发器远程构建选项

来自分类Dev

詹金斯没有触发器远程构建选项

来自分类Dev

詹金斯的工作应该由Multijob中的另一个工作“触发”吗?

来自分类Dev

不论上游工作状态如何,如何触发詹金斯下游工作

来自分类Dev

重命名詹金斯工作

来自分类Dev

Gulp在詹金斯不工作

来自分类Dev

詹金斯-每月或每周建立工作

来自分类Dev

詹金斯:大量分支的建筑工作

来自分类Dev

用ansible创建詹金斯工作

来自分类Dev

如何在詹金斯分组工作?

来自分类Dev

詹金斯工作状态的广泛清单?

来自分类Dev

詹金斯在工作后删除Dir

来自分类Dev

詹金斯工作执行问题

来自分类Dev

定期运行詹金斯工作

来自分类Dev

从詹金斯(Jenkins)删除旧工作

来自分类Dev

詹金斯:在工作结束前提拔

来自分类Dev

詹金斯构建/ CI工作的API?