jenkins中,可通过post实现通过构建结果执行不同的后续步骤,例如:

在jenkins编译失败的时候,自动更新jira状态;构建成功的时候,邮件通知相关人员。

参考样例脚本如下:

pipeline {
    agent any
        parameters {
        string(name:'email',defaultValue:'wuzz@gildata.com', description: '请填写收件人邮箱')
        }

    environment{
        name='亲爱的配置人员~'
        }
    stages {                        
         stage ('客户端打包') {
            when{ anyOf { 
                equals expected: true, actual: params.client_build; equals expected: '分支已合并', actual: JIRA_ISSUE_STATU }
                    }
            steps {
                echo "${params.client_version}"
                    }
                }
            stage('客户端部署'){
                when{ anyOf { 
                equals expected: true, actual: params.client_deploy; equals expected: '分支已合并', actual: JIRA_ISSUE_STATU }
                    }
                steps{
                echo "${params.client_version}"
                sh"""
                """
                     }
                    }
        }
    post{
        success{
            script {                
                mail to: "${params.email}",
                subject: "PineLine '${JOB_NAME}' (${BUILD_NUMBER}) result",
                body: "hi~${env.name}\n pineline '${JOB_NAME}' (${BUILD_NUMBER}) run success\n请及时前往${env.BUILD_URL}进行查看"
                
            }
        }
        failure{
        script { 
            def b="${params.JIRA_ISSUE_STATU}"
            def c="已部署至开发环境"
            def d="失败已忽略"
            def e="分支已合并"
                if(("${b}").equals("${c}")){
                    withEnv(['JIRA_SITE=wzzjira']) {
                        def transitionInput =
                        [
                            transition: [
                                id: '91'
                            ]
                        ]
                        jiraTransitionIssue idOrKey:"${params.JIRA_ISSUE_KEY}" , input: transitionInput
                            }
                         }
                else{
                    if(("${b}").equals("${d}")){
                        withEnv(['JIRA_SITE=wzzjira']) {
                        def transitionInput =
                        [
                            transition: [
                                id: '81'
                            ]
                        ]
                        jiraTransitionIssue idOrKey:"${params.JIRA_ISSUE_KEY}" , input: transitionInput
                            }
                            }
                    else{
                        withEnv(['JIRA_SITE=wzzjira']) {
                        def transitionInput =
                        [
                            transition: [
                                id: '111'
                            ]
                        ]
                        jiraTransitionIssue idOrKey:"${params.JIRA_ISSUE_KEY}" , input: transitionInput
                            }
                        }
                mail to: "${params.email}",
                subject: "PineLine '${JOB_NAME}' (${BUILD_NUMBER}) result",
                body: "hi~${env.name}\n pineline '${JOB_NAME}' (${BUILD_NUMBER}) run failure\n请及时前往${env.BUILD_URL}进行查看"
                         }
                }

        }
        unstable{
            script { 
                
                mail to: "${params.email}",
                subject: "PineLine '${JOB_NAME}' (${BUILD_NUMBER})结果",
                body: "hi~${env.name}\n pineline '${JOB_NAME}' (${BUILD_NUMBER}) run unstable\n请及时前往${env.BUILD_URL}进行查看"
                
            }
        }
    }
    }

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐