如何在电子邮件中包含管道错误(Email-ext插件)

时间:2019-02-04 10:18:07

标签: jenkins jenkins-pipeline jenkins-plugins

我想知道为什么它会打印在我的Jenkins实例的控制台上,为什么通过电子邮件构建失败。我做了以下

node {
    try 
    {
     stage('checkout') {
      checkout scm
       }
     stage('restore') {
      sh 'dotnetge restore test.sln'
       }
    }
    catch (err) {
       cause=err
       emailext body:"Error: $cause ",
        to: 'myemail@gmail.com'
    }
}

控制台上的结果类似于“未找到dotnetge命令”,我希望通过电子邮件收到这种相同类型的错误。这是我通过电子邮件获得的

错误:hudson.AbortException:脚本返回了退出代码127

1 个答案:

答案 0 :(得分:0)

由于shell脚本失败,它将给出您当前正在获取的异常。您可以采用一种解决方法来解决此问题:

node {
    try
    {
        stage('checkout') {
            checkout scm
        }
        stage('restore') {
            try{
                sh 'dotnetge restore test.sln'}
            catch(exc){
                error "dotnetge command failed"
            }
        }
    }
    catch (err) {
        cause=err
        emailext body:"Error: $cause ",
                to: 'myemail@gmail.com'
    }
}

这样,您至少可以知道哪个命令失败。我要做的就是创建另一个名为curr_stage的变量,并将其值分配给当前阶段:

node{
    def curr_stage
    try {
        stage("stage1") {
            curr_stage = "stage1"
        }
        stage("stage2") {
            curr_stage = "stage2"
        }
        stage("stage3") {
            curr_stage = "stage3"
        }
    }catch(exception){
        //notify that the the build failed at ${curr_stage}
    }
}