代码之家  ›  专栏  ›  技术社区  ›  RaGe

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

  •  2
  • RaGe  · 技术社区  · 6 年前

    我们从jenkins管道中运行多个“GitAs scm”和“jenkins”作业。jenkinsfile中有足够的基于try/catch的错误处理来捕获错误条件并通知正确的通道。 This blog post

    但是,如果在获取jenkins文件时首先出现问题,则作业将无声地失败。在管道启动之前,如何从常规作业启动失败生成通知?

    2 回复  |  直到 6 年前
        1
  •  5
  •   Yogesh    6 年前

    Jenkins SCM管道没有类似的执行规定 catch/finally 如果 Jenkinsfile 加载失败了,我想以后不会有了。

    然而,有这样一个问题 global-post-script 它在Jenkins上每个作业的每次构建之后都运行groovy脚本。你必须把那个脚本放进去 $JENKINS_HOME/global-post-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'"
    }
    
        2
  •  0
  •   edbighead    6 年前

    您可以在将文件推送到存储库之前验证它。

    Command-line Pipeline Linter

    有一些 IDE Integrations

        3
  •  0
  •   schudoku    3 年前

    显然这是詹金斯的一个悬而未决的问题: https://issues.jenkins.io/browse/JENKINS-57946