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

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

问题在于将参​​数传递给Jenkins。我正在描绘类似以下工作流程的内容;


用户在Slack中输入/Jenkins job2 param1 param2。这正在调用伞式作业,该作业将解析参数以找出要运行的参数。
命令以某种方式发送到了伞式詹金斯的工作。 Heroku实例,直接集成,带/。
伞作业接收job2 param1 param2作为字符串。 (也许作为单个参数的值,可能预分割为多个字段)
如果尚未完成,Umbrella作业将字符串拆分,并指出用户希望使用参数job2param1运行param2
伞作业会执行一个buildjob来按要求运行下游作业,这会将Slack反馈给用户。

这是第2-3步,这让我感到震惊。

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

#1 楼

您发现的插件在Heroku实例与构建作业之间没有1:1的比例,因为它以作业名称作为参数,因此您应该能够从单个Heroku实例中运行任意数量的作业。 br />关于在job参数中传递空格,单词split是在空格上进行的,因此引用不会改变任何内容。您可能会尝试使用HTML空格字符%20并查看它是否起作用?

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

评论


确切地说,空格分割是在链接上方几行进行的,我还没有进行足够的挖掘来确认是否会在所有空格上分割,但是听起来好像很烂

–滕西拜
17年5月4日在19:30

没错,它被此行分割为空格github.com/joshdholtz/jenkins-slack-command/blob/master / ...因此,参数是否带引号无关

–迈克尔·佩雷拉(Michael Pereira)
17年5月4日在19:35

是的参数被循环并再次分割=如果值包含空格,它将中断,使用%20在发布到松弛时可能有效,但是必须进行测试,因为我不知道詹金斯或松弛如何解析或保留它们

–滕西拜
17年5月4日在21:09