当前位置: 首页 > 面试题库 >

在Jenkinsfile失败中获取错误原因

高自怡
2023-03-14
问题内容

我有以下post失败部分:

   post {
        failure {
            mail subject: "\u2639 ${env.JOB_NAME} (${env.BUILD_NUMBER}) has failed",
                    body: """Build ${env.BUILD_URL} is failing!
                          |Somebody should do something about that""",
                      to: "devel@example.com",
                 replyTo: "devel@example.com",
                    from: 'jenkins@example.com'
        }
    }

我想在错误消息的正文中包含构建失败的原因。

我怎样才能做到这一点?

如果没有,是否可以将构建日志文件附加到电子邮件?


问题答案:

我不知道一种凭空自动获取故障原因的方法。

但是,您可以在每个阶段中使用“ post {failure
{”块来至少捕获其失败的阶段到环境变量中(例如env.FAILURE_REASON),并在最终(全局范围)通知块中访问该env var 。

为了获得更高的粒度,您可以重用全局env变量的相同机制,但是可以使用try {} catch {}块来捕获哪个特定步骤失败了。

一个通用的例子是:

   pipeline {
     stages {
       stage('Build') {
         steps {
           ...
         }
         post {
           failure {
             script { env.FAILURE_STAGE = 'Build' }
           }
         }
       }
       stage('Deploy') {
         steps {
           ...
         }
         post {
           failure {
             script { env.FAILURE_STAGE = 'Deploy' }
           }
         }
       }
       ...
     }
     post {
        failure {
            mail subject: "\u2639 ${env.JOB_NAME} (${env.BUILD_NUMBER}) has failed",
                    body: """Build ${env.BUILD_URL} is failing in ${env.FAILURE_STAGE} stage!
                          |Somebody should do something about that""",
                      to: "devel@example.com",
                 replyTo: "devel@example.com",
                    from: 'jenkins@example.com'
        }
      }
    }

从技术上讲,您甚至可以根据失败阶段进行一些自动分类,并发送更具针对性的通知,甚至可以创建特定(例如Jira)票证。

要将控制台日志附加到电子邮件通知,您需要查看 emailext和’attachLog:true’属性



 类似资料:
  • 新生成中出错: 任务:应用程序:进程DebugMainManifest失败错误'D:\项目\反应\新文件夹\新\真棒\Android\应用程序\构建\输出\日志\manifest-merger-debug-report.txt(访问被拒绝)'在编写合并报告文件时,构建可以继续,但合并活动将不会被记录11个可操作的任务:11个已执行 失败:生成失败,出现异常。 错误:任务:app:processDe

  • 我试图使用mongorestore还原一个有100个集合(800GB)的数据库,它是从Mongo2.4.4中作为备份的。我使用了以下命令: 我使用batchSize=1000、500、100来尝试使其工作。我在10-15次收集后得到一个插入错误。当我得到这个错误时,它几乎完美地运行了将近一个半小时。 失败:还原错误:bp_prod079.anepisoDebreault:从/data/backup

  • 我最近升级了我的项目。 我的项目生成失败并出现错误: 任务:检查样式主失败 . gradle\daemon\4.10.2\etc\check style\checkstyle-suppressions.xml(系统找不到指定路径) 这是我的gradle构建文件:

  • 我得到的错误 Gradle同步失败:找不到org . jetbrains . trove 4j:trove 4j:2016 08 24。在以下位置搜索到:file:/D:/Android/grad le/m2 repository/org/jetbrains/trove 4j/trove 4j/2016 08 24/trove 4j-2016 08 24 . POM file:/D:/Androi

  • 无法从Github生成android项目,错误为“Gradle sync failed:Cause:error=0,spawn failed”有关详细信息,请参阅IDE日志(帮助|显示日志)(434ms) 任何想法 ?

  • 我在build.gradle中使用以下依赖项: } 我已经注释了一行 为了避免不匹配,但仍然得到以下错误: 错误:任务“:app:dexDebug”的执行失败