【问题标题】:Jenkins Pipeline Evaluation Step with slackSend使用 slackSend 的 Jenkins 管道评估步骤
【发布时间】:2018-12-07 15:05:15
【问题描述】:

我正在尝试在 configFileProvider 块内进行评估, 在步骤块内,在管道内,这是完整的代码。

.

pipeline {
agent any
environment {
    GIT_CREDS = credentials('GIT')
    }

stages {
    stage ('Load Repos') {
    steps {
        cleanWs notFailBuild: true
        sh """
        env
        git clone "https://$GIT_CREDS@$GIT_URL
        git clone "https://$GIT_CREDS@$CONTENT_URL_SHORT"
        """
    }
    }

    stage ('Run Content Build Script') {
    steps {
        slackSend channel: 'notif', message: "Started Content Build and Validate for ${env.CONTENT_GIT_REPO} for Repository ${env.CONTENT_GIT_URL} by ${env.JOB_NAME} (<${env.BUILD_URL}|Open>)", tokenCredentialId: '<Token>'
        configFileProvider(
        [configFile(fileId: '605dae22-d459-4c9a-8d3c-f88d305195aa', variable: 'script')]) {
            sh(returnStatus: true, script: """python3.6 $script""")
            if (returnStatus != 0) {
                currentBuild.result = 'FAILED'
                slackSend channel: SLACK_CHANNEL, message: "Content Build and Validate FAILED for ${env.CONTENT_GIT_REPO} for Repository ${env.CONTENT_GIT_URL} by ${env.JOB_NAME} (<${env.BUILD_URL}|Open>)", color: 'warning', tokenCredentialId: 'slack-token'
            }
            else {
                slackSend channel: SLACK_CHANNEL, message: "Content Build and Validate Succeded for ${env.CONTENT_GIT_REPO} for Repository ${env.CONTENT_GIT_URL} by ${env.JOB_NAME} (<${env.BUILD_URL}|Open>)", color: 'success', tokenCredentialId: 'slack-token'
            }
        }
    }
    }

我感兴趣的区块是:

configFileProvider(
        [configFile(fileId: '605dae22-d459-4c9a-8d3c-f88d305195aa', variable: 'script')]) {
            sh(returnStatus: true, script: """python3.6 $script""")
            if (returnStatus != 0) {
                currentBuild.result = 'FAILED'
                slackSend channel: SLACK_CHANNEL, message: "Content Build and Validate FAILED for ${env.CONTENT_GIT_REPO} for Repository ${env.CONTENT_GIT_URL} by ${env.JOB_NAME} (<${env.BUILD_URL}|Open>)", color: 'warning', tokenCredentialId: 'slack-token'
            }
            else {
                slackSend channel: SLACK_CHANNEL, message: "Content Build and Validate Succeded for ${env.CONTENT_GIT_REPO} for Repository ${env.CONTENT_GIT_URL} by ${env.JOB_NAME} (<${env.BUILD_URL}|Open>)", color: 'success', tokenCredentialId: 'slack-token'
            }
        }

基本上,我想根据返回状态评估脚本是否成功,并基于此发送一条松弛消息。我尝试了几种不同的方法,例如尝试将脚本设置为评估方式,例如:

if (python3.6 "$script) { ......

这也不起作用,任何建议将不胜感激。

【问题讨论】:

    标签: jenkins jenkins-pipeline pipeline


    【解决方案1】:

    几乎是对的。 (1) 您需要将 if 逻辑放在脚本步骤中。 (2) 需要保存 sh 步骤的结果并在 if 中使用。

    configFileProvider(
        [configFile(fileId: '605dae22-d459-4c9a-8d3c-f88d305195aa', variable: 'script')]) {
            script {
                def int buildStatus = sh(returnStatus: true, script: """python3.6 $script""")
                if (buildStatus != 0) {
                    currentBuild.result = 'FAILED'
                    slackSend channel: SLACK_CHANNEL, message: "Content Build and Validate FAILED for ${env.CONTENT_GIT_REPO} for Repository ${env.CONTENT_GIT_URL} by ${env.JOB_NAME} (<${env.BUILD_URL}|Open>)", color: 'warning', tokenCredentialId: 'slack-token'
                }
                else {
                    slackSend channel: SLACK_CHANNEL, message: "Content Build and Validate Succeded for ${env.CONTENT_GIT_REPO} for Repository ${env.CONTENT_GIT_URL} by ${env.JOB_NAME} (<${env.BUILD_URL}|Open>)", color: 'success', tokenCredentialId: 'slack-token'
                }
    
            }
        }
    

    试试这个,看看效果如何。

    【讨论】:

    • 谢谢!这正是我所需要的。
    最近更新 更多