小编典典

使用Slack启动Jenkins构建

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传出Webhooks或Slackbot功能的更sevabot风格的方法?

只是在寻找一些易于实施,可扩展性,可维护性等方面的指导,以及一些人们成功使用过的示例设置。

谢谢。


阅读 545

收藏
2020-07-25

共1个答案

小编典典

所以我终于设法使用Slack的斜杠命令,字符串解析和以下答案来做到这一点:如何在Jenkins中设置环境变量?

我使用的Jenkins插件:

  1. scm之前的版本
  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’)发送过来。

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

scm之前的构建步骤1是“执行外壳”命令,该命令由以下脚本组成:

build_parameters=($text)

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

我使用“ props”文件来存储已解析的字符串,因为在此步骤中尝试使用“导出”设置环境变量失败了,因为在实际开始构建时env变量不会持续存在。该脚本将$
text参数存储在一个字符串数组(由空格分隔)中,我只引用该数组的每个索引即可获取所需的变量。需要新的工作参数吗?只需在此处添加另一行。

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

是的,无需创建任何Web应用程序即可手动解析“文本”参数,然后使用在URL中单独设置的所有参数调用另一个URL。不必使用每种可能的参数组合制作一百万个不同的Jenkins工作。

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

2020-07-25