从Slack将字符串传递给Jenkins工作


12

在理想的世界中,我们的技术知识程度较低的员工只需使用Slack命令来运行作业,并将结果轻松地反馈给他们,而无需使用Jenkins GUI。我发现在GitHub上使用Slack Command在Jenkins中开始构建,但是它有一些局限性,包括似乎要求Heroku实例与Jenkins作业的比例为1:1,这对我们的目的而言并不理想。

我的想法是让人们使用诸如的单数命令/jenkins,并在其后使用将由一项作业解析并用于在下游启动其他作业的参数。这使我们只能使用一个松弛命令/一个实例,但仍然为我们提供了所需的所有灵活性。

问题在于将参​​数传递给詹金斯。我在想像下面的工作流程;

  1. 用户类型/Jenkins job2 param1 param2为Slack。这正在调用一个伞形作业,它将解析参数以找出要运行的参数。

  2. 命令以某种方式发送到了伞式詹金斯的工作。Heroku实例,直接集成,带电子。

  3. 伞作业job2 param1 param2以字符串形式接收。(也许作为单个参数的值,也许预分割成多个字段)

  4. 如果尚未完成,Umbrella作业会拆分字符串,并job2使用参数param1和找出用户想要运行param2

  5. 伞作业会执行一个buildjob来按要求运行下游作业,这会将Slack反馈给用户。

是第2-3步使我感到震惊。如何从Slack向我的Jenkins工作传递一个字符串(带空格!)?

如果我的前提不对,我也很乐意挑战自己的构架。

Answers:


5

您发现的插件在Heroku实例与构建作业之间没有1:1的比例,因为该插件将作业名称作为参数,因此您应该能够从单个Heroku实例运行任意数量的作业。

至于在job参数中传递空格,单词split是在空格上进行的,因此引用不会改变任何内容。您可以尝试使用HTML空格字符%20,看看它是否有效?

我个人将尝试使用插件直接使用关联的参数运行正确的作业,而不是通过筛选作业。


1
确切地说,空格分割是在链接上方几行进行的,我没有充分挖掘以确认它是否会在所有空格上分割,但这听起来像是行不通的
Tensibai

您是正确的,它在此行之间用空格分割github.com/joshdholtz/jenkins-slack-command/blob/master / ...因此,参数是否带引号无关紧要
Michael Pereira

是的参数被循环遍历并再次分割=如果值包含空格,它将中断,使用%20在发布到松弛时可以工作,但是必须进行测试,因为我不知道Jenkins或松弛如何解析或保留它们
2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.