使用 Slack 启动 Jenkins 构建

Using Slack to start Jenkins builds

我们即将擦除我们的 Mac Mini 并从头开始重新安装新的 XCode 和 Jenkins。我们最近才开始使用 Slack,我们想用它来接收 Jenkins 构建通知并开始 Jenkins 构建。

所以 Slack 通知,没问题。一切正常。

我在尝试使用 Slack 开始构建时遇到了问题。

本教程 (http://sonnguyen.ws/how-to-trigger-a-jenkins-build-from-slack/) 介绍了一种使用 Slack 斜杠命令的方法。但是我们的 Mac Mini 在我们的内部网络上。到目前为止,我们一直在使用 Skype 通过 Jenkins 使用这个 sevabot 自动构建。

对于 Slack,流行的选择似乎是使用斜线命令但是....我仍然有一些问题,因为这是我第一次设置这些东西:

  1. 我们是否应该使用斜杠命令方法并采用某种 leader/follower 方法,如下所述:http://i-phone-dev.blogspot.de/2013/07/jenkin-build-xcode-project-in-mac-slave.html
  2. 是否有使用 Slack 传出 Webhook 或 Slackbot 功能的更像 sevabot 风格的方法?

只是在寻找有关此内容的易用性、可扩展性、可维护性等方面的指导,以及人们已经成功使用的一些示例设置。

谢谢。

所以我终于设法使用 Slack 的斜杠命令、字符串解析和这个答案来做到这一点:How to set environment variables in Jenkins?

我使用的 Jenkins 插件:

  1. pre-scm-build
  2. EnvInject 插件
  3. 构建授权令牌根插件

我将我的 Slack 斜杠命令配置为调用 https://my-jenkins-server//buildByToken/buildWithParameters?job=JOB_NAME&token=MY_SECRET_TOKEN。因此,当我键入 '/build_my_app branch_name project_param2' 时,我在斜杠命令后键入的文本将作为 URL 参数(在此中的 'branch_name project_param2'例)。

一旦它到达另一边,我需要将这个 'text' 参数拆分为 Jenkins 可用于构建过程的多个环境变量。为此,我添加了两个 pre-scm 构建步骤。

pre-scm 构建步骤 1 是一个 'Execute shell' 命令,由以下脚本组成:

build_parameters=($text)

echo BRANCH=${build_parameters[0]} > props
echo PARAM2=${build_parameters[1]} >> props

'props' 是我用来存储解析后的字符串的文件,因为在此步骤中尝试使用 'export' 设置环境变量失败,因为当构建实际开始时环境变量不会持续存在.该脚本将 $text 参数存储在一个字符串数组中(由 space 个字符分隔),我只是引用数组的每个索引来获取我想要的变量。需要新的作业参数?只需在此处添加另一行。

预 scm 构建步骤 2 是一项 'Inject Environment Variables' 作业,在 'Properties File Path' 中我只是指定“$WORKSPACE/props”。然后用我解析的环境变量读取文件并将它们注入到作业环境中。

是的,无需创建任何网络应用程序来手动解析 'text' 参数,然后调用另一个 URL,所有参数都在 URL 中单独设置。无需使用每种可能的参数组合进行一百万种不同的 Jenkins 作业。

希望这可以节省一些时间!

您可以试用下面的开源聊天机器人开发框架BenTen。开箱即用的 slack 和 Jira,Jenkins integration.It 将需要 10-15 分钟来设置 slack 机器人并让它与你的 Jenkins 实例一起工作。 https://github.com/intuit/benten