当前位置: 首页 > 知识库问答 >
问题:

确定哪个下游作业失败并在Jenkins中发送通知

颜经艺
2023-03-14

我在Jenkins中创建了一个包装器作业,如果我的GIT存储库中有任何新的提交,它将每小时触发一次。此包装器作业依次调用其他6个下游作业。因此,我的包装器作业(W)的结构如下:

W-

我使用Jenkins参数化触发器插件将一个作业缝合到另一个作业,这样,如果下游作业失败,我的上游作业就会失败。在完成最后一个下游作业(F)后,包装作业(W)将从其当前工作区中的所有下游作业复制工件。

现在,当我的一个下游作业(比如说E)失败时,我会从失败的下游作业(E)以及所有其他上游作业(D、C、B、A和W)获得失败通知。所以我总共收到6封邮件,这产生了一些噪音。

如果我仅在Wrapper作业(W)上激活电子邮件通知,那么我会收到一个失败通知,其中提到作业A已失败。然后我将检查作业A的日志,但发现是作业B失败并继续日志检查,直到我到达作业E。

如何自定义通知以发送标识导致故障的特定下游作业(在本例中为E)的单个邮件?

运筹学

是否有更好的方法来触发下游作业,等待所有下游作业完成,并将工件从所有下游作业复制到触发作业?

共有1个答案

裴俊智
2023-03-14

在Groovy Postbuild中编写了一个Groovy脚本来遍历包装器作业的所有子项目,并在任何子项目失败时将包装器作业标记为失败。

还更改了“触发/调用其他项目上的构建”中的退出标准,以从不将作业标记为失败/不稳定。相反,根据下游子项目的状态,在groovy脚本中处理将作业设置为失败的调用

 类似资料:
  • 如果Jenkins下游作业的任何上游作业失败或不稳定,那么阻止或失败的最佳方法是什么? 目前,我已经勾选了“当上游项目正在构建时阻止构建”选项,并且运行良好,因为我的下游作业正在等待所有上游作业完成构建。但是,如果任何上游失败或不稳定,我不想构建作业。 谢啦

  • Jenkins场景详细信息: ====================== -Jenkins中构建执行器的数量(在主/从上):3 -UpStream作业:USJobs,此作业可以在任何构建执行器上运行 -DownStream作业:DSJobs USJob在构建步骤中有这个:回声“生日快乐詹姆斯”,完成这项工作需要5秒钟 DSJob在构建步骤中有这个:回显“詹姆斯邦德死了”,完成这项工作 需要5秒钟

  • 问题内容: 我正在尝试编写一个Jenkins作业(例如CopyJob),该作业将复制另一个作业(在此作业中使用Multijob插件),并且还将其所有下游作业复制到新作业中。想法是要有一个Multijob作为模板,以便可以将其复制到新的Multijobs中(例如,用于特定的分支或功能)。 看到: 当手动触发“ CopyJob”时,它将使用新的SubJobs创建一个新的MultiJob: 到目前为止,

  • 问题内容: 我有一个Jenkins作业,它通过Nightwatch.js框架在Browserstack上运行Selenium测试。我们有一套完整的测试程序,可以让守夜人在不同的进程中运行,并且我们需要一种在所有测试运行后将通过/失败值返回给Jenkins的方法。 我一直在尝试使用Nightwatch挂钩在每个模块的末尾运行一段代码,但是我无法弄清楚需要采取什么措施才能使Jenkins作业可以访问该

  • 问题内容: 我目前在整个构建过程中看到一系列错误。 如果您松开詹金斯(例如撞到箱子崩溃或杀死-9),这是预期的行为吗? 还是发生了更糟的事情(例如不良的网络连接)? 堆栈和错误是: 问题答案: 如果 Jenkins主服务器 失去与 从 服务器的连接,您将看到该错误。可能是由于您上面列出的三个问题中的任何一个: 手动杀死从属进程 从服务器不可用 主站和从站之间的网络问题

  • 这个问题是关于如何向在jenkins的下游作业中破坏集成测试的git提交者发送电子邮件,并查看下游作业中的更改列表。 我还没有尝试我在这里写的所有东西,所以我可能是错的,这些是我遇到的代码的印象。 显然,有很多人试图回答这个问题,但没有一个是令人满意的,所以我将详细说明。详情如下: 我们曾经使用svn。我们的作业层次结构是一个作业签出并编译,并触发其他作业,这些作业获取编译工件并对其执行misc集