Jenkins DSL - проверка состояния внутри всегда под почтой - PullRequest
0 голосов
/ 06 декабря 2018

У нас есть Jenkinsfile со скриптом DSL.В котором я настроил слабые сообщения, как показано ниже.

....
....
pipeline {

    agent none

    stages {
        stage('Initialization') {
                     agent {
                         label 'master'
                     }
            when {
                beforeAgent true
                expression {
                                isMaster = (env.BRANCH_NAME == masterBranchName)
                                isPatch = (env.BRANCH_NAME ==~ /${patchBranchRegex}/)
                                isPR = !isMaster && !isPatch
                                echo "isMasterBranch : ${isMaster} , isPatchBranch : ${isPatch}, isPRBranch : ${isPR}"
                            return true
                           }
            }
            steps {
                    script {
                        message_default = "\nJob URL: <${env.RUN_DISPLAY_URL}|${serviceName}-pipeline>"
                        message_default = "${message_default} \nBranch : ${env.BRANCH_NAME}"
                        message_default = "${message_default} \nBuild# : ${env.BUILD_NUMBER}"

                        sh 'git rev-parse --short HEAD > commitID.txt'
                        gitCommitID = readFile('commitID.txt').trim()
                        sh 'git show -s HEAD | grep -Po \'(?<=(Author: )).*(?=<)\' > committer.txt'
                        gitCommitter = readFile('committer.txt').trim()
                        message_default = "${message_default} \nCommitID# : ${gitCommitID}"
                        message_default = "${message_default} \nCommitter : ${gitCommitter}"
                        message_final = message_default
                        }
                }
        }

        stage('Build Pull Req branch') {
        ....
        ....
        }
        ....
        ....
    post {
        always {
                slackSend channel: "${slackChannel}",
                          color: COLOR_MAP[currentBuild.currentResult],
                          message: "@here ${BUILD_TYPE_MAP[buildType]} ${message_final} \nStatus : ${currentBuild.currentResult} ${EMOJI_MAP[currentBuild.currentResult]}"
        }
    }
}

В этом случае - Я хотел бы добавить условие , чтобы проверить, прервана ли сборка, если да, выполните какой-либо сценарий изатем добавьте прерванный по имени пользователя к окончательному сообщению (добавить в слабину)

post {
    always {

            when {
                ${currentBuild.currentResult} is ABORTED
                }
            do this {
                     script {
                        sh 'curl -s "${env.BUILD_URL}/consoleFull" | grep -Ei "Aborted by|Rejected by" | head -1 | awk -F"by " \'{print $2}\' > AbortedBy.txt'
                        abortedBy = readFile('AbortedBy.txt').trim()
                        message_final = "${message_final} \nAborted by : ${abortedBy}"
                    }
                }

            slackSend channel: "${slackChannel}",
                      color: COLOR_MAP[currentBuild.currentResult],
                      message: "@here ${BUILD_TYPE_MAP[buildType]} ${message_final} \nStatus : ${currentBuild.currentResult} ${EMOJI_MAP[currentBuild.currentResult]}"
    }
}


Возможно ли это?

Примечание:

  • Я тоже пытался добавить post -> aborted {} - но в этом случае он запускается только aborted{}, он не запускается always{}, когда кто-то прерывает работу
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...