Трубопровод Дженкинс с двусторонним шагом - PullRequest
0 голосов
/ 04 мая 2018

Я строю декларативный конвейер Jenkins, и после того, как я выполнил несколько этапов тестирования, я хотел бы иметь шаг, который уведомляет слабый канал о готовности сборки к производству. Если на этот слабый пост не отвечают в течение определенного периода времени, я бы хотел, чтобы Slack уведомил Jenkins Pipeline о переходе к следующему шагу. Если фиксированный ответ «ABORT» отвечает на сообщение Slack, я бы хотел, чтобы Slack отправил сообщение обратно в конвейер Jenkins, чтобы прервать сборку. Любые идеи о том, как осуществить это двустороннее взаимодействие между Slack и Jenkins Pipeline?

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

1 Ответ

0 голосов
/ 09 мая 2018

Нет способа сделать это напрямую. Что вы можете сделать, так это то, что вы можете разделить свои работы на две или три работы и отправить уведомление в конце первой работы, используя такую ​​функцию:

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 и в задании, которое вам нужно построить, иметь параметр для проверки значения этого переданного параметра и иметь условие в соответствии с это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...