jenkins管道中电子邮件分机的If条件

jenkins管道中电子邮件分机的If条件,jenkins,jenkins-pipeline,jenkins-groovy,Jenkins,Jenkins Pipeline,Jenkins Groovy,如何基于多个项目在电子邮件正文中发送html文件? 使用下面的直接代码,我可以发送邮件,但如果我使用“if-else条件”,则其失败,是否可以在格式中使用if-condition 直接代码: always { emailext mimeType: 'text/html', body: '${FILE,path="./logs/${JOB_NAME}_Build_${BUILD_NUMBER}/misc/email_dashboard.html"}',

如何基于多个项目在电子邮件正文中发送html文件? 使用下面的直接代码,我可以发送邮件,但如果我使用“if-else条件”,则其失败,是否可以在格式中使用if-condition

直接代码:

always {
        emailext mimeType: 'text/html',
        body: '${FILE,path="./logs/${JOB_NAME}_Build_${BUILD_NUMBER}/misc/email_dashboard.html"}',
        subject: '${JOB_NAME} Report',
        to: 'xyz.com'
        }
我正在努力实现这样的目标:

post {
    success {
        archiveArtifacts 'logs/${JOB_BASE_NAME}_Build_${BUILD_NUMBER}/**/*, logs/static_results/*'
        script {
            load "logs/${JOB_BASE_NAME}_Build_${BUILD_NUMBER}/display/pipeline_vars.groovy"
        }
    }
    if ((${NODE_NAME}.contains("KG"))&&(${JOB_NAME}.contains("Nightly"))) {
        always {
            emailext mimeType: 'text/html',
            body: '${FILE,path="./logs/${JOB_NAME}_Build_${BUILD_NUMBER}/misc/email_dashboard.html"}',
            subject: '${JOB_NAME} Report',
            to: 'xyz.com'
        }
    }
    else if ((${NODE_NAME}.contains("MT")) &&(${JOB_NAME}.contains("Feature"))) {
        always {
            emailext mimeType: 'text/html',
            body: '${FILE,path="./logs/${JOB_NAME}_Build_${BUILD_NUMBER}/misc/email_dashboard.html"}',
            subject: '${JOB_NAME} Report',
            to: 'xyz.com'
        }
    }
}

这里的问题是,在
if-else
块中不能始终包含
。在
声明性管道
语法中,必须在
脚本
块中使用
if-else
,如下所示:

pipeline {
    agent { label 'windows' }
    //agent { label 'linux' }

    stages {
        stage('Echo') {
            steps {
                echo 'Inside Echo block'
            }
        }
    }
    post {
        always {
            script {
                if ((env.NODE_NAME == "windows")) {
                    echo "Running on ${env.NODE_NAME} node"
                }
                else if ((env.NODE_NAME == "linux")) {
                    echo "Running on ${env.NODE_NAME} node"
                }
            }
        }
    }
}
输出:


这里的问题是,在
if-else
块中不能始终包含
。在
声明性管道
语法中,必须在
脚本
块中使用
if-else
,如下所示:

pipeline {
    agent { label 'windows' }
    //agent { label 'linux' }

    stages {
        stage('Echo') {
            steps {
                echo 'Inside Echo block'
            }
        }
    }
    post {
        always {
            script {
                if ((env.NODE_NAME == "windows")) {
                    echo "Running on ${env.NODE_NAME} node"
                }
                else if ((env.NODE_NAME == "linux")) {
                    echo "Running on ${env.NODE_NAME} node"
                }
            }
        }
    }
}
输出:


下面的代码解决了我的问题:

always {
                    script {
                       if (env.JOB_NAME.contains('Nightly'))
                       {
                            emailext (
                                to: '${DEFAULT_RECIPIENTS}',
                                subject: "${env.JOB_NAME}-Report",
                                body: '${FILE,path="./logs/${JOB_NAME}_Build_${BUILD_NUMBER}/misc/xyz.html"}',
                                attachLog: true,
                                attachmentsPattern: 'logs/${JOB_NAME}_Build_${BUILD_NUMBER}/misc/xyz.png',
                            )
                        }
                    }
                }

下面的代码解决了我的问题:

always {
                    script {
                       if (env.JOB_NAME.contains('Nightly'))
                       {
                            emailext (
                                to: '${DEFAULT_RECIPIENTS}',
                                subject: "${env.JOB_NAME}-Report",
                                body: '${FILE,path="./logs/${JOB_NAME}_Build_${BUILD_NUMBER}/misc/xyz.html"}',
                                attachLog: true,
                                attachmentsPattern: 'logs/${JOB_NAME}_Build_${BUILD_NUMBER}/misc/xyz.png',
                            )
                        }
                    }
                }

你试过这个建议了吗?如果有帮助,请回答。你试过这个建议了吗?如果有帮助,请给出答案。