每个jenkins作业的结果并通过电子邮件发送

xriantvc  于 2022-12-26  发布在  Jenkins
关注(0)|答案(1)|浏览(209)

在我的公司,我有一个流水线,运行几个作业。我想得到每个作业的结果,并将每个结果写入一个文件或变量中,然后通过电子邮件发送给我。有这种可能性吗?请记住:我不想要管道的结果,而是管道内每个作业的结果。
我甚至尝试过通过API发出请求,但是对于每个管道来说,它都必须有一个代码,这根本不可行,维护问题。

2izufjch

2izufjch1#

触发管道内的作业时,请使用build job步骤。此步骤具有名为propagate的属性,该属性:
如果启用(默认状态),则此步骤的结果是下游生成的结果(例如,成功、不稳定、失败、未生成或已中止)。如果禁用,则即使下游生成不稳定、失败等,此步骤也会成功;根据需要使用返回值的result属性。
你可以为调用作业编写一个 Package 器,它存储每个作业的结果(可能还有其他对调试有用的数据,比如构建URL),这样你就可以在以后用它来构造电子邮件的内容。

def jobResults = [:]

def buildJobAndStoreResult(jobName, jobParams) {
  def run = build job: jobName, parameters: jobParams, propagate: false
  jobResults[jobName] = [
    result: run.result
  ]
}

然后你可以通过迭代Map来构造一封电子邮件的正文。

emailBody = "SUMMARY\n\n"

jobResults.each() { it ->
​  str += "${it.key}: ${it.value.result}\n"
}

并使用邮件步骤发送报告。
如果您希望您的管道在任何调用的作业失败时发送电子邮件,并添加从电子邮件报告到失败作业和调用者管道的链接后失败,则值得考虑。

相关问题