在我的公司,我有一个流水线,运行几个作业。我想得到每个作业的结果,并将每个结果写入一个文件或变量中,然后通过电子邮件发送给我。有这种可能性吗?请记住:我不想要管道的结果,而是管道内每个作业的结果。我甚至尝试过通过API发出请求,但是对于每个管道来说,它都必须有一个代码,这根本不可行,维护问题。
2izufjch1#
触发管道内的作业时,请使用build job步骤。此步骤具有名为propagate的属性,该属性:如果启用(默认状态),则此步骤的结果是下游生成的结果(例如,成功、不稳定、失败、未生成或已中止)。如果禁用,则即使下游生成不稳定、失败等,此步骤也会成功;根据需要使用返回值的result属性。你可以为调用作业编写一个 Package 器,它存储每个作业的结果(可能还有其他对调试有用的数据,比如构建URL),这样你就可以在以后用它来构造电子邮件的内容。
build job
propagate
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" }
并使用邮件步骤发送报告。如果您希望您的管道在任何调用的作业失败时发送电子邮件,并添加从电子邮件报告到失败作业和调用者管道的链接后失败,则值得考虑。
1条答案
按热度按时间2izufjch1#
触发管道内的作业时,请使用
build job
步骤。此步骤具有名为propagate
的属性,该属性:如果启用(默认状态),则此步骤的结果是下游生成的结果(例如,成功、不稳定、失败、未生成或已中止)。如果禁用,则即使下游生成不稳定、失败等,此步骤也会成功;根据需要使用返回值的result属性。
你可以为调用作业编写一个 Package 器,它存储每个作业的结果(可能还有其他对调试有用的数据,比如构建URL),这样你就可以在以后用它来构造电子邮件的内容。
然后你可以通过迭代Map来构造一封电子邮件的正文。
并使用邮件步骤发送报告。
如果您希望您的管道在任何调用的作业失败时发送电子邮件,并添加从电子邮件报告到失败作业和调用者管道的链接后失败,则值得考虑。