【问题标题】:Accessing information from previous Jenkins pipeline run从以前的 Jenkins 管道运行中访问信息
【发布时间】:2018-06-20 11:49:24
【问题描述】:

我设置了一个构建多个项目配置的管道。构建配置的顺序无关紧要,重要的是所有构建是否成功。

我想知道的是在上一次管道运行中哪个构建配置失败(如果管道失败)。计划是使用此信息从该配置开始下一个构建,因为它很可能会再次失败。我已经可以使用currentBuild.getPreviousBuild().result 访问以前的管道构建状态。以下任何一项都对我有用:

  1. 是否可以在管道运行之间存储信息(完整运行,而不是同一运行中的管道阶段)?

  1. 是否可以获取上一个管道失败的阶段?

【问题讨论】:

标签: jenkins jenkins-pipeline


【解决方案1】:

您可以在currentBuild.previousBuild.description 处持久化失败的阶段。

作为替代方案,您可以使用所需的任何内容归档文件并通过currentBuild.previousBuild.rawBuild.artifactManager.root() 访问它。从那里开始,拥有VirtualFile,您只需要遍历存档的工件。请注意,这种更简洁但冗长的解决方案(可能)需要批准大量用于管道沙箱的方法

PS:正如 Jacek Ślimok 所说,在使用

设置环境变量之后
env.FAILING_BUILD="foo" 

它可用于下一个构建通过

currentBuild.previousBuild.buildVariables.FAILING_BUILD

【讨论】:

  • 我接受这个作为答案,因为这也可以,尽管我找到了更好的解决方案。有一个 getBuildVariables() 函数返回在先前构建期间设置的环境变量映射,例如我在一个版本中设置了env.FAILING_BUILD="foo",它可以通过currentBuild.getPreviousBuild().getBuildVariables()?.FAILING_BUILD 在下一个版本中使用。如果您愿意,您可以将此作为另一种可能性添加到您的答案中。
  • buildVariables 被记录为与下游构建相关。如果它适用于任何类型的工作,它是一个更精简的解决方案。测试后将其添加到答案中。
猜你喜欢
  • 1970-01-01
  • 2021-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多