2015-05-04 100 views
4

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

So Slack通知,没问题。所有的工作。

我试图用Slack开始构建时遇到了问题。

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

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

  1. 我们应该用斜杠命令方法,并具有某种类型的领导者/追随者的方法,如下所述:http://i-phone-dev.blogspot.de/2013/07/jenkin-build-xcode-project-in-mac-slave.html
  2. 是否有使用Slack Outgoing Webhooks或Slackbot功能的更多sevabot风格的方法?

只是寻找一些关于这个东西的易用性,可扩展性,可维护性等方面的指导和一些人们已经成功的样本设置。

谢谢。

回答

4

所以我最终使用斯莱克的斜杠命令,字符串分析做出来,这样的回答:How to set environment variables in Jenkins?

詹金斯插件我用:

  1. 预SCM-建立
  2. EnvInject插件
  3. 构建授权令牌根插件

我配置了我的S缺少斜杠命令来拨打https://my-jenkins-server//buildByToken/buildWithParameters?job=JOB_NAME&token=MY_SECRET_TOKEN。所以,当我输入'/ build_my_app branch_name project_param2'时,我在slash命令后面输入的文本将作为URL参数(本例中为'branch_name project_param2')发送。

一旦它到达另一边,我需要将这个'text'参数分成多个环境变量,Jenkins可以使用这些变量来构建过程。为了实现这一点,我添加了两个pre-scm构建步骤。

预SCM生成步骤1是一个“执行壳”命令,其由下面的脚本的:

build_parameters=($text) 

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

“道具”是我用来存储所解析的串的文件,如试图设置在这个步骤中使用'export'的环境变量失败了,因为当构建实际开始时,env变量不会持久。该脚本将$ text参数存储在一个字符串数组中(由空格字符分隔),并且他们只是引用数组的每个索引以获取我想要的变量。需要一个新的工作参数?只需在这里添加另一行。

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

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

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

+2

我尝试了相同的方法,但它返回404。 404的原因很明显,我的詹金斯不允许查看/触发任何作业,直到您登录它。 其中一个解决方案可能是让詹金斯的工作访问匿名用户,但有什么办法,我可以避免这种情况? – Aditya