jenkins中,可通过post实现通过构建结果执行不同的后续步骤,例如:
在jenkins编译失败的时候,自动更新jira状态;构建成功的时候,邮件通知相关人员。
参考样例脚本如下:
pipeline {
agent any
parameters {
string(name:'email',defaultValue:'wuzz@gildata.com', description: '请填写收件人邮箱')
}
environment{
name='亲爱的配置人员~'
}
stages {
stage ('客户端打包') {
when{ anyOf {
equals expected: true, actual: params.client_build; equals expected: '分支已合并', actual: JIRA_ISSUE_STATU }
}
steps {
echo "${params.client_version}"
}
}
stage('客户端部署'){
when{ anyOf {
equals expected: true, actual: params.client_deploy; equals expected: '分支已合并', actual: JIRA_ISSUE_STATU }
}
steps{
echo "${params.client_version}"
sh"""
"""
}
}
}
post{
success{
script {
mail to: "${params.email}",
subject: "PineLine '${JOB_NAME}' (${BUILD_NUMBER}) result",
body: "hi~${env.name}\n pineline '${JOB_NAME}' (${BUILD_NUMBER}) run success\n请及时前往${env.BUILD_URL}进行查看"
}
}
failure{
script {
def b="${params.JIRA_ISSUE_STATU}"
def c="已部署至开发环境"
def d="失败已忽略"
def e="分支已合并"
if(("${b}").equals("${c}")){
withEnv(['JIRA_SITE=wzzjira']) {
def transitionInput =
[
transition: [
id: '91'
]
]
jiraTransitionIssue idOrKey:"${params.JIRA_ISSUE_KEY}" , input: transitionInput
}
}
else{
if(("${b}").equals("${d}")){
withEnv(['JIRA_SITE=wzzjira']) {
def transitionInput =
[
transition: [
id: '81'
]
]
jiraTransitionIssue idOrKey:"${params.JIRA_ISSUE_KEY}" , input: transitionInput
}
}
else{
withEnv(['JIRA_SITE=wzzjira']) {
def transitionInput =
[
transition: [
id: '111'
]
]
jiraTransitionIssue idOrKey:"${params.JIRA_ISSUE_KEY}" , input: transitionInput
}
}
mail to: "${params.email}",
subject: "PineLine '${JOB_NAME}' (${BUILD_NUMBER}) result",
body: "hi~${env.name}\n pineline '${JOB_NAME}' (${BUILD_NUMBER}) run failure\n请及时前往${env.BUILD_URL}进行查看"
}
}
}
unstable{
script {
mail to: "${params.email}",
subject: "PineLine '${JOB_NAME}' (${BUILD_NUMBER})结果",
body: "hi~${env.name}\n pineline '${JOB_NAME}' (${BUILD_NUMBER}) run unstable\n请及时前往${env.BUILD_URL}进行查看"
}
}
}
}