【问题标题】:Dynamically identify a Jenkins build动态识别 Jenkins 构建
【发布时间】:2013-01-01 23:55:10
【问题描述】:

目前,我正在通过从 shell 脚本向 Jenkins 发布一些参数来启动构建。我需要检查构建是成功还是失败,并且我想避免使用构建后的 Jenkins 脚本调用(我不希望 Jenkins 在我的服务器上启动任何脚本的运行),所以我的想法是发布到 Jenkins每 10 秒左右(在构建时!= false)以获取具有各种构建参数的 JSON 对象。虽然如果我知道要检查的构建号,这可以正常工作,但我似乎看不到动态跟踪当前构建号并确保我的脚本正在检查构建的好方法刚刚启动,而不是当前正在运行的其他构建。

可能会在短时间内启动多个构建,因此在开始构建后立即发布到 jenkins/job/my_build_job/lastBuild/api/json 并以这种方式检查数字似乎并不合适,因为存在竞争情况的问题。

如何从我的服务器上的脚本动态跟踪特定构建,以检查从cron 调用的帖子发起的构建的构建成功或失败?是否有办法命名构建,以便我可以使用BUILD_NAME 启动它,然后发布到jenkins/job/my_build_job/BUILD_NAME/api/json

【问题讨论】:

  • 如果不跟踪和管理您的构建,您使用 Jenkins 的目的是什么?看起来你会很麻烦地想出办法来做詹金斯已经为你做的事情。
  • @regulatethis 虽然有些工作不仅仅是通用 CI 构建,但有些是来自 svn 的特定标签,这些标签是根据请求构建的(请求是发布到 jenkins 的 shell 脚本),所以它需要是动态的。这也是为什么我不想让最终构建步骤启动脚本以避免在非专业构建上调用它的原因。
  • 难道你不能有一个参数化的构建,它采用 SVN 标记并构建该修订版吗?
  • @regulatethis 这正是我正在做的。所以,我的问题是如何在没有来自 jenkins 的构建后脚本调用的情况下动态检查构建是否成功?
  • 我以前从未看过 Jenkins 的 API,但是如何在脚本中生成一个唯一标识符来触发构建并将其作为参数传递给它启动的每个构建。然后寻找它作为构建的属性以跟踪它们?

标签: bash build jenkins continuous-integration


【解决方案1】:

您可以进行多种不同的 API 调用:

jenkins/job/my_build_job/api/json?tree=lastBuild[number] 

将为您提供最后完成的构建或当前正在进行的构建

jenkins/job/my_build_job/api/json?tree=nextBuildNumber

将为您提供下一个构建编号 - 这包括排队等待资源的构建。

【讨论】:

    【解决方案2】:

    已在 Jenkins 中提交了一个问题,以在 Jenkins 远程 API 调用中返回内部版本号:https://issues.jenkins-ci.org/browse/JENKINS-12827。请在此处添加 cmets,以便尽快进行处理。

    【讨论】:

      猜你喜欢
      • 2016-12-30
      • 2013-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-09
      • 1970-01-01
      • 1970-01-01
      • 2022-12-17
      相关资源
      最近更新 更多