jenkins - Jenkins Pipeline Slack 两步交互
问题描述
我正在构建一个声明性的 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"
}
}
解决方案
没有办法直接做。你可以做的是你可以将你的工作分成两个或三个工作,并使用这样的函数在第一个工作结束时发送通知:
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,并且在您必须构建的工作中,有一个参数来检查这个传递参数的值并根据它有一个条件。
推荐阅读
- arrays - 根据序列号列表创建具有设备逻辑名称的阵列
- jquery - CSRF 令牌不匹配 Laravel 5..8
- jquery - 在 ReactJs 中使用依赖于 jQuery 的库?
- python - 如何在给定条件下生成所有可能的组合以提高效率?
- android - 在 Android 应用程序中,如何尽快处理大的 xml 文件?充气需要太多时间(6 秒)
- android - 如何在Android中获取库的包名?
- java - 发布 Apache CXF 服务时出现异常(java 配置,没有 Spring Boot)
- python - 如何将字典列表转换为 Pandas 数据框
- python-3.x - 我的 python 程序生成十个随机乘法问题。并告诉用户答案是对还是错并打印正确的答案
- scala - 在 Flink 的两个不同的流中使用相同的运算符