Mik*_*ert 7 jenkins jenkins-pipeline
我正在使用Jenkins声明性管道,并希望根据构建状态执行一些后期构建操作.
更准确地说,我想在构建状态发生变化时发送电子邮件(从成功到失败,或成功到不稳定或成功失败).
这是我的管道:
pipeline {
agent none
stages {
stage('test') {
agent any
steps {
sh './tests.sh'
}
}
}
post {
changed {
// Send different emails depending on build status
// Success -> anything else
// Anything else -> Success
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何的想法 ?
Jon*_*kis 12
对于写条件,您可以定义自己的方法.
例如,如果您只想在构建状态更改时发送电子邮件:
def notifyStatusChangeViaEmail(buildStatus) {
def status
switch (buildStatus) {
case 'SUCCESS':
status = 'is now green again!'
break
case 'UNSTABLE':
status = 'has become unstable..'
break
case 'FAILURE':
status = 'has turned RED :('
break
}
emailext (
subject: "Job '${env.JOB_NAME}' ${status}",
body: "See ${env.BUILD_URL} for more details",
recipientProviders: [
[$class: 'DevelopersRecipientProvider'],
[$class: 'RequesterRecipientProvider']
]
)
}
pipeline {
...
post {
changed {
// Will trigger only when job status changes: GREEN -> RED, RED -> GREEN, etc
notifyStatusChangeViaEmail(currentBuild.currentResult)
}
}
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,您还希望将notifyStatusChangeViaEmail方法定义放在共享管道库中,以便可以在其他作业/管道中重复使用它.