Jenkins管道松弛双向台阶相互作用

Jenkins管道松弛双向台阶相互作用,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我正在构建一个声明性的Jenkins管道,在我完成了一些测试步骤之后,我希望有一个步骤可以通知一个空闲通道一个构建已经准备好进入生产。如果slack帖子在固定时间内没有响应,我希望slack通知Jenkins Pipeline继续下一步。如果一个固定的回复“ABORT”回复Slack post,我希望Slack能够与Jenkins管道通信以中止构建。关于如何实现Slack和Jenkins管道之间的双向交互,有什么想法吗 node { stage('build'){ ech

我正在构建一个声明性的Jenkins管道,在我完成了一些测试步骤之后,我希望有一个步骤可以通知一个空闲通道一个构建已经准备好进入生产。如果slack帖子在固定时间内没有响应,我希望slack通知Jenkins Pipeline继续下一步。如果一个固定的回复“ABORT”回复Slack post,我希望Slack能够与Jenkins管道通信以中止构建。关于如何实现Slack和Jenkins管道之间的双向交互,有什么想法吗

node {
    stage('build'){
        echo "building"
    }
}
stage('Deploy approval'){
    input "Deploy to prod?"
}
node {
    stage('deploy to prod'){
        echo "deploying"
    }
}

没有办法直接做到这一点。您可以将作业分为两个或三个作业,并在第一个作业结束时使用以下功能发送通知:

def notifySlack(text, channel) {
def slackURL = ' https://hooks.slack.com/services/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'
def payload = JsonOutput.toJson([text      : text,
                                 channel   : channel,
                                 username  : "jenkins",
                                 icon_emoji: ":jenkins:"])
sh "curl -X POST --data-urlencode \'payload=${payload}\' ${slackURL}"
}

然后在slack中,您可以编写脚本,使用斜杠命令构建作业的另一部分(实际上是新作业):

这可以通过编写php或任何服务器端代码并向其发送参数来完成,您可以在其中发送ABORT,并且在您必须构建的作业中,有一个参数来检查此传递参数的值,并根据该参数设置条件