使用Slack启动Jenkins构建

时间:2015-05-04 13:21:34

标签: macos jenkins

我们即将擦除我们的Mac Mini并从头开始重新安装新的XCode和Jenkins。我们刚刚开始使用Slack,我们希望用它来接收Jenkins构建通知并启动Jenkins构建。

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

当我尝试使用Slack开始构建时,我的问题出现了。

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

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

  1. 我们应该使用斜杠命令方法,并采用如下所述的某种领导者/追随者方法:http://i-phone-dev.blogspot.de/2013/07/jenkin-build-xcode-project-in-mac-slave.html
  2. 是否有使用Slack Outgoing Webhooks或Slackbot功能的更多sevabot风格的方法?
  3. 只是寻找一些关于易于实现,可扩展性,可维护性等方面的指导,以及人们取得成功的一些示例设置。

    感谢。

2 个答案:

答案 0 :(得分:5)

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

我使用的Jenkins插件:

  1. 预SCM-构建
  2. EnvInject插件
  3. 构建授权令牌根插件
  4. 我配置了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 build步骤1是一个'Execute shell'命令,它由以下脚本组成:

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

    'props'是我用来存储已解析字符串的文件,因为尝试使用'export'在此步骤中设置环境变量失败,因为当构建实际启动时env变量不会持久存在。此脚本将$ text参数存储在字符串数组中(按空格字符拆分),我只是引用数组的每个索引来获取所需的变量。需要一个新的工作参数?只需在此添加另一行。

    Pre-scm构建步骤2是“注入环境变量”作业,在“属性文件路径”中,我只需指定“$ WORKSPACE / props”。然后,它使用我解析的env变量读取文件,并将它们注入作业环境。

    所以是的,无需创建任何webapps来手动解析'text'参数,然后调用不同的URL,其中所有参数都在URL中单独设置。不必为每个可能的参数组合制作一百万个不同的Jenkins作业。

    希望这能节省一些时间!

答案 1 :(得分:1)

您可以尝试下面的开源聊天机器人开发框架BenTen。它具有开箱即用的Slack和Jira,Jenkins的集成。安装Slack bot并使其与您的Jenkins实例兼容将需要10到15分钟。 https://github.com/intuit/benten