我正在尝试编写groovy脚本,该脚本应向批准者发送电子邮件通知,以删除Jenkins中的管道作业。
我能够发送电子邮件并获得批准者输入,但我对如何检索输入(继续或中止)感到困惑。如果输入是Proceed,我应该删除该作业,如果是中止,则工作不应该'被删除。
我查看了一些引用并使用了“approveReceivedEvent”,但它无效。有没有办法检索用户输入?
以下是我的代码段
=IF(DATEDIF(F1,F2,"d")>1,NETWORKDAYS.INTL(F1+1,F2-1,"0000011")*12+NETWORKDAYS.INTL(F1+1,F2-1,"1111101")*4,0)+IF(DATEDIF(F1,F2,"d")>0,(MOD(F2,1)-IF(WEEKDAY(F2,2)<6,TIME(7,0,0),TIME(9,0,0)))*24+(IF(WEEKDAY(F1,2)<6,TIME(19,0,0),TIME(13,0,0))-MOD(F1,1))*24,(F2-F1)*24)
修改了代码.Below是有效的代码片段。
stage ('DELETE')
build job: 'JOBNAME', wait: true
mail to: 'xxx@xxx', subject: "Please approve #${env.JOB_NAME} to delete",
body: <p>Job '${env.JOB_NAME}" + environment + "[${env.BUILD_NUMBER}]' NEEDS APPROVAL</p><p>Please approve at "<a href='${env.JOB_URL}'>${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>"</p>"
try {
input id: 'Proceed', message: "\nDo you want to proceed to delete job?"
} catch (err) {
//approveReceivedEvent(id: id, approved: false)
throw err
}
//approveReceivedEvent(id: id, approved: true)
}
job(env.JOB_NAME) {
steps {
dsl {
removeAction('DELETE')
}
}
}
答案 0 :(得分:0)
您可以尝试的是,使用上面提到的代码片段创建一个单独的作业(让我们称之为'J')并使其具有与您的代码所需的输入相同的参数,如:
JOB_NAME , BUILD_NUMBER , APPROVED
等。
现在,在您发送邮件的原始工作中,您可以为APPROVED = YES或1和APPROVED = NO或0提供链接。在这些链接中,您可以使用您在邮件中发送的参数远程触发作业'J',并将APPROVED参数作为1或0用于两个链接。