如何在groovy中通过邮件批准删除管道作业

时间:2018-03-07 22:15:42

标签: jenkins groovy jenkins-pipeline

我正在尝试编写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 &QUOT;<a href='${env.JOB_URL}'>${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>&QUOT;</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')
        }
      }
}

1 个答案:

答案 0 :(得分:0)

您可以尝试的是,使用上面提到的代码片段创建一个单独的作业(让我们称之为'J')并使其具有与您的代码所需的输入相同的参数,如:

JOB_NAME , BUILD_NUMBER , APPROVED等。

现在,在您发送邮件的原始工作中,您可以为APPROVED = YES或1和APPROVED = NO或0提供链接。在这些链接中,您可以使用您在邮件中发送的参数远程触发作业'J',并将APPROVED参数作为1或0用于两个链接。