如何在 JEnkinsfile 中基于 git 分支运行 post condtion?



如果当前正在构建的分支是主分支,我正在尝试向代码审阅者发送一封带有附件的电子邮件通知,但如果分支不是主分支,那么我想向没有附件提交代码的开发人员发送电子邮件。

if "${env.BRANCH_NAME}" == "master "{
post {
always {
emailext(
subject: "Build ${env.JOB_NAME} - ${currentBuild.displayName} ${currentBuild.result}",
body: """Build ${currentBuild.result}
${env.JOB_URL}
""",
recipientProviders: [[$class: 'DevelopersRecipientProvider'], [$class: 'RequesterRecipientProvider']]
)
}
} 
}
else {
post {
always {
emailext(
subject: "Build ${env.JOB_NAME} - ${currentBuild.displayName} ${currentBuild.result}",
body: """Build ${currentBuild.result}
${env.JOB_URL}
""",
recipientProviders: [[$class: 'DevelopersRecipientProvider'], [$class: 'RequesterRecipientProvider']]
)
}
} 

我得到 不是一个有效的部分定义:"如果("${env.BRANCH_NAME}" == "master"({ 帖子 { 詹金斯的错误,谁能帮我完成这件事。 还有,无论如何都可以向将代码从 github 而不是开发人员合并到分支的代码审阅者发送电子邮件通知。

我点击了克劳德尔@arnaud提供的链接,但它仍然显示一些错误,但是一旦我稍微调整了代码,如下所示,那么它现在就像一个魅力。

post { 
always { 
script {
if ("${env.BRANCH_NAME}" == 'master') {
emailext(
attachmentsPattern: "**/*_SC.sql",
subject: "Build ${env.JOB_NAME} - ${currentBuild.displayName} ${currentBuild.currentResult}",
body: """Build ${currentBuild.result}
${env.JOB_URL}
""",
to: 'admin@admin.com'
)
} else {
emailext(
subject: "Build ${env.JOB_NAME} - ${currentBuild.displayName} ${currentBuild.currentResult}",
body: """Build ${currentBuild.result}
${env.JOB_URL}
""",
recipientProviders: [[$class: 'DevelopersRecipientProvider']]
)
}
}
}
}

诀窍是在代码中添加 Script{},以便可以运行其中的脚本用于声明性 post 语句。

"${env.BRANCH_NAME}"可以替换为 env。BRANCH_NAME 适用于 Linux 系统。我的系统是基于Windows的,所以必须使用${env。BRANCH_NAME} 作为 env 变量来获取分支的名称。

最新更新