Jenkins - 如何为(a)特定工作保留执行者

Posted

技术标签:

【中文标题】Jenkins - 如何为(a)特定工作保留执行者【英文标题】:Jenkins - How to reserve an executor for (a) specific job(s) 【发布时间】:2017-05-25 17:09:52 【问题描述】:

我们有一个 Jenkins 服务器,有 8 个执行器和 20 个作业。其中 15 项工作大约需要 2 小时才能完成,而其余 5 项只需 15 分钟。我想保留 1 个执行器(或 2 个)仅运行这 5 个小作业,并限制其他作业在其他执行器上运行。注意:我没有任何奴隶,只有 8 个执行者在主 Jenkins 进程上。

我是 Jenkins 的新手,所以我想知道有什么办法可以做到吗?谢谢。

【问题讨论】:

【参考方案1】:

据我了解,Kiddo 将 master 用于 8 个 executor。你可以做的是添加一个新的在主节点上运行的从节点,我们称之为从主节点。 IE。您将拥有具有 6 个执行程序的 master,其使用设置为尽可能多地使用,然后是 slave-master,其使用仅限于短期构建。因此,在您的服务器上,您将运行两个 jenkins 任务,一个是 jenkins master 它自己,两个是 slave-master。

有关如何连接从站的信息,请转到https://wiki.jenkins-ci.org/display/JENKINS/Distributed+builds

【讨论】:

是的,这应该足以满足 OP 的需要。 谢谢,那我需要添加一个奴隶。好像没有别的选择了。 然而,这会导致一些问题,因为我们正在使用 selenium 运行 UI 测试,某些元素不可见或无法使用此方法启动浏览器。当我删除奴隶主时它工作正常。感谢您的建议。【参考方案2】:

添加到@StephenKing 答案,您还必须在配置时specify the label name for each job,如下图所示:

【讨论】:

感谢您提供更准确的信息。我猜,编辑现有答案可能会更容易理解;-)【参考方案3】:

我有点晚了,但我认为限制可以运行多少并发“慢”作业比尝试保留执行程序要容易得多。使用 Lockable Resources 插件很容易做到这一点:https://wiki.jenkins.io/display/JENKINS/Lockable+Resources+Plugin

只需添加与您希望允许的慢速作业数量(6 或 7 个)一样多的资源,并为它们都赋予相同的标签。修改作业配置以锁定资源(按数量为 1 的标签),然后才能执行。如果所有资源都已被锁定,则作业将一直等待,直到有一个资源被释放。

【讨论】:

【参考方案4】:

在slave配置中,可以将使用模式设置为只构建标签表达式匹配本节点​​的作业

然后,只有匹配给定标签(例如job-group-whatever)的作业才会在这个从属服务器上执行。

【讨论】:

谢谢,但我没有从服务器。我在唯一的主服务器上启用了 6 个执行器。 有没有办法只在master上实现它?谢谢 您在主服务器上配置所有从服务器/代理,是的。 @Kiddo 在主“否”上。创建slave,给他们Label并在job中指定label。 StephenKing 和@Arpit,我的意思是只有主人:imgur.com/I4QqxVd。没有从机。谢谢【参考方案5】:

我有同样的问题。我在同一个奴隶上安装了多个代理,它工作正常。 节点远程目录应该不同。

agent as a windows services

【讨论】:

以上是关于Jenkins - 如何为(a)特定工作保留执行者的主要内容,如果未能解决你的问题,请参考以下文章

如何为詹金斯管道声明方法定义工作区体积

如何为 Jenkins 管道中的失败阶段实施重试选项?

如何为启用 2FA 的 github 帐户配置 Jenkins?

SBT 如何为特定的 groupid 禁用 Ivy 缓存

Python 3:unittest.mock如何为特定输入指定不同的返回值?

在windows下如何为特定进程设置指定代理?