我的Jenkins管道在主计算机和代理(从)计算机上运行之间随机交替。
整个管道使用的语句只有一个agent
,因此:
pipeline {
agent any
我如何才能使构建在负载平衡的代理中运行,而又从不掌握?
也许可以使用agent { label 'some-label' }
完成。是否有一个预定义标签指定代理而不是主服务器?还是我必须自己给所有代理商贴标签?
agent any
与agent none
,但是这些都不妨碍母版的使用。node
节中,但这似乎迫使构建在主节点或指定节点上运行,这又再次导致代理平衡。答案 0 :(得分:2)
您可以使用node('!master') {...}
或agent { label '!master' }
语法。查看更多详细信息there。
Jenkins Best Practices页面上还有一个解决方案,用于设置主节点本身的限制:
如果您具有更复杂的安全设置,使某些用户只能配置作业,而不能管理Jenkins,则需要防止它们在主节点上运行构建,否则他们可以不受限制地访问JENKINS_HOME目录。您可以通过将执行程序计数设置为零来执行此操作。相反,请确保所有作业都在代理上运行。这样可以确保jenkins主服务器可以扩展以支持更多的工作,并且还可以防止构建意外或恶意地修改$ JENKINS_HOME上的潜在敏感数据。如果您需要在主服务器上运行某些作业(例如Jenkins本身的备份),请使用Job Restrictions Plugin来限制可以在那里执行的作业。
答案 1 :(得分:1)
在jenkins Web界面中基于自由样式作业的标签配置节点限制时,可以使用表达式!master
进行操作。还支持布尔运算符||
和&&
。
我不确定管道配置是否支持相同的表达式语法,但是值得一试。