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

jenkins作业失败通知-使用来自scm的管道

袁增
2023-03-14

但是,如果首先获取jenkinsfile时出现问题,则作业将以静默方式失败。如何在管道启动之前就从一般的作业启动失败中生成通知?

共有1个答案

司空鸣
2023-03-14

Jenkins SCM管道没有任何类似于catch/finally的执行规定,如果Jenkinsfile加载失败,将调用这些规定,我认为将来也不会有。

但是,有一个全局后脚本,它在Jenkins上的每个作业的每个构建之后都运行groovy脚本。必须将该脚本放置在$JENKINS_HOME/global-poster script/目录中。

使用此功能,您可以根据失败的项目和/或失败的原因/异常向管理员发送通知或电子邮件。

if ("$BUILD_RESULT" != 'SUCCESS') {
  def job = hudson.model.Hudson.instance.getItem("$JOB_NAME")
  def build = job.getBuild("$BUILD_NUMBER")
  def exceptionsToHandle = ["java.io.FileNotFoundException","hudson.plugins.git.GitException"]
  def foundExection = build
    .getLog()
    .split('\n')
    .toList()
    .stream()
    .filter{ line -> 
      !line.trim().isEmpty() && !exceptionsToHandle.stream().filter{ex -> line.contains(ex)}.collect().isEmpty()
    }
    .collect()
    .size() > 0;
  println "do something with '$foundExection'"
}
 类似资料:
  • 目前,我们试图将SonarQube分析添加到我们的jenkins工作管道中。但是每次构建作业失败时,都会出现以下消息:我们会重新安装所有插件和配置。无济于事。也许你们中有人能帮我们。 我们所做的: 从SonarQube执行本教程的所有步骤:用SonarQube扫描仪为Jenkins进行分析 > 安装SonarQube插件2.5 在管理詹金斯>配置系统下添加和配置SonarQube 在管理詹金斯>全

  • 我正在尝试动态生成阶段以并行运行,但面临下一个错误: WorkflowScript:59:第59行第5列的阶段“主”应为“步骤”、“阶段”或“平行”之一。阶段('main'){^ 这是詹金斯管道: 有办法解决这个问题吗? 谢谢

  • 我在Jenkins中创建了一个包装器作业,如果我的GIT存储库中有任何新的提交,它将每小时触发一次。此包装器作业依次调用其他6个下游作业。因此,我的包装器作业(W)的结构如下: W- 我使用Jenkins参数化触发器插件将一个作业缝合到另一个作业,这样,如果下游作业失败,我的上游作业就会失败。在完成最后一个下游作业(F)后,包装作业(W)将从其当前工作区中的所有下游作业复制工件。 现在,当我的一个

  • 问题内容: 我在Jenkins v2.19中有一个管道常规脚本。我也有一个 “ Slack Notification Plugin” v2.0.1和“ Groovy Postbuild Plugin”。 我已经成功发送了一条消息“构建已开始”和“构建已完成”(如果有的话)。 当某些构建步骤失败时,如何向Slack通道发送消息“ Build failed”? 问题答案: 您可以执行类似操作并使用tr

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

  • 我有一系列执行快速检查的阶段。我想完成所有这些,即使有失败。例如: 第二阶段失败,因此默认情况下第三阶段不执行。 通常这将是的工作,但我想在阶段视图中显示它们。在下面的模型中: 构建4显示了通常发生的情况。作业失败,因此不运行