【问题标题】:Jenkins: Single email summary report of pipeline jobs/stages?Jenkins:管道作业/阶段的单一电子邮件摘要报告?
【发布时间】:2020-02-04 17:34:46
【问题描述】:

是否有一种通用的方法来发送电子邮件通知以总结底层 jenkins 阶段和工作?

现在,我们有一个父管道,它在其中调用其他作业或管道作业。现在每个工作都在发送自己的电子邮件,而且变得太吵了。

例如,如果我有 2 个阶段,每个阶段都有 2 个并行任务/作业。我想发送一封电子邮件摘要,例如:

第 1 阶段:失败(因为 taskA 失败)

--firstTaskA: PASS

--firstTaskB: 失败

第 2 阶段:通过

--firstTaskA: PASS

--firstTaskB:通过

示例管道:

stage("Stage 1") {
    steps {
        parallel (
            "firstTaskA" : {
                //do some stuff
            },
            "secondTaskA" : {
                // Do some other stuff in parallel
            }
        )
    }
}
stage("Stage 2") {
    steps {
        parallel (
            "firstTaskB" : {
                //do some stuff
            },
            "secondTaskB" : { //calls a pipeline job
                // Do some other stuff in parallel
            }
        )
    }
}
post{ //aggregate the results and send an email }

【问题讨论】:

    标签: jenkins jenkins-pipeline


    【解决方案1】:
    node {
    try {
    
        stage('Clean Work Space') {
            try {
                 // Try stage...
            } catch (e) {
                currentBuild.result = "FAILURE"
                throw e
            } finally {
                    stage('Cleanup Job workspace') {
                    cleanWs()
              }
              if(currentBuild.result == 'FAILURE') {
                  // Send email
              }
          }
        }
      }
    

    使用 try、catch 和 finally 并尝试捕捉失败,如果发现失败发送电子邮件。

    您可以在 try、catch 或 finally 部分发送电子邮件,具体取决于您的电子邮件原因。

    如果您想发送单个电子邮件,请在主节点上使用 try、catch 和 finally,在所有阶段之外(使用 try、catch 和 finally 包装所有阶段)。

    【讨论】:

    • 谢谢。这为我指明了正确的方向。我将根据其他阶段的结果在后续阶段中使用 try/catch 和变量注入的组合。
    • 我的荣幸,听起来不错。这样您就可以将通知分为多个案例。也可以成功。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    相关资源
    最近更新 更多