【问题标题】:Jenkins Pipeline Slack Two Way Step InteractionJenkins Pipeline Slack 两路步骤交互
【发布时间】:2018-05-04 07:59:34
【问题描述】:

我正在构建一个声明性的 Jenkins 流水线,在我完成了几个测试步骤之后,我希望有一个步骤来通知一个松弛通道,一个构建已准备好进入生产。如果该 Slack 帖子在固定时间内没有得到回复,我希望 Slack 通知 Jenkins Pipeline 继续下一步。如果对 Slack 帖子的固定回复“ABORT”回复,我希望 Slack 与 Jenkins 管道进行通信以中止构建。关于如何在 Slack 和 Jenkins Pipeline 之间完成这种双向交互的任何想法?

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

【问题讨论】:

    标签: jenkins jenkins-pipeline


    【解决方案1】:

    没有办法直接做。你可以做的是你可以将你的工作分成两个或三个工作,并使用这样的功能在第一个工作结束时发送通知:

    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 中,您可以使用斜杠命令编写脚本来构建工作的另一部分(实际上是一项新工作):https://github.com/auth0/slash#inputs-and-outputs

    这可以通过编写 php 或任何服务器端代码并​​将其发送参数来完成,您可以在其中发送 ABORT 并且在您必须构建的工作中,有一个参数来检查这个传递的参数的值并根据它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      相关资源
      最近更新 更多