首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins声明管道条件post操作

Jenkins声明管道条件post操作
EN

Stack Overflow用户
提问于 2017-08-02 09:16:52
回答 4查看 16.7K关注 0票数 13

我正在使用Jenkins声明性管道,并希望根据构建状态执行一些post生成操作。

更准确地说,当构建状态发生变化时,我想发送一封电子邮件(从成功到失败,从成功到不稳定,或者从失败到成功)。

这是我的管道:

代码语言:javascript
复制
pipeline {
    agent none
    stages {
        stage('test') {
            agent any
            steps {                
                sh './tests.sh'
            }
        }
    }
    post {
        changed {
            // Send different emails depending on build status
            // Success       -> anything else
            // Anything else -> Success
        }
    }
}

知道吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-08-31 21:38:08

对于编写条件,可以定义自己的方法。

例如,如果只希望在生成状态更改时发送电子邮件:

代码语言:javascript
复制
def notifyStatusChangeViaEmail(buildStatus) {
    def status

    switch (buildStatus) {
        case 'SUCCESS':
            status = 'is now green again!'
            break

        case 'UNSTABLE':
            status = 'has become unstable..'
            break

        case 'FAILURE':
            status = 'has turned RED :('
            break
    }

    emailext (
        subject: "Job '${env.JOB_NAME}' ${status}",
        body: "See ${env.BUILD_URL} for more details",
        recipientProviders: [
            [$class: 'DevelopersRecipientProvider'], 
            [$class: 'RequesterRecipientProvider']
        ]
    )
}

pipeline {
    ...

    post {
        changed {
            // Will trigger only when job status changes: GREEN -> RED, RED -> GREEN, etc
            notifyStatusChangeViaEmail(currentBuild.currentResult)
        }
    }
}

理想情况下,您还需要将notifyStatusChangeViaEmail方法定义放在共享管道库中,以便可以在其他作业/管道中重用它。

票数 17
EN

Stack Overflow用户

发布于 2017-08-02 15:23:53

请参阅这条管道:

代码语言:javascript
复制
post {
        success {
            emailext ( 
                subject: '${DEFAULT_SUBJECT}'+'SUCESSFUL', 
                body: '${DEFAULT_CONTENT}',
                to: '${EMAIL_RECIPIENTS}'
                );
                slackSend (color: 'good', message: ":csp_operational: ${env.JOB_NAME} - #${env.BUILD_NUMBER} Success (<${env.BUILD_URL}|Open>)");


        }
        failure {
            emailext ( 
                subject: '${DEFAULT_SUBJECT}'+'FAILED!', 
                body: '${DEFAULT_CONTENT}',
                to: '${EMAIL_RECIPIENTS}'
                );
                slackSend (color: 'danger', message: ":x: ${env.JOB_NAME} - #${env.BUILD_NUMBER} Failure (<${env.BUILD_URL}|Open>)");


        }

    }

您可以使用扩展的电子邮件插件->配置Jenkins->扩展电子邮件配置来设置默认的电子邮件参数。

票数 2
EN

Stack Overflow用户

发布于 2017-08-02 09:52:01

例:失败与成功不稳定

代码语言:javascript
复制
if (currentBuild.result == 'SUCCESS') {  if(hudson.model.Result.FAILURE.equals(currentBuild.rawBuild.getPreviousBuild()?.getResult()) || hudson.model.Result.UNSTABLE.equals(currentBuild.rawBuild.getPreviousBuild()?.getResult())) {
SEND MAIL()
}
}

发送电子邮件:https://jenkins.io/blog/2017/02/15/declarative-notifications/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45456564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档