如何使Jenkins管道在(任何)代理计算机上运行,​​但永远不会成为主服务器?

Jos*_*Fox 1 jenkins jenkins-pipeline

我的Jenkins管道在主机和代理(从机)上运行之间随机交替。

整个管道使用只有一个agent语句,因此:

pipeline {
  agent any
Run Code Online (Sandbox Code Playgroud)

我如何才能使构建在负载平衡的代理中运行,而不再成为主服务器?

  • 也许可以用agent { label 'some-label' }。是否有一个预定义标签指定代理而不是主服务器?还是我必须自己给所有代理商贴标签?

  • 节目如何选择一个特定的经纪人,但我想代理机器之间的随机均衡。

  • 这个问题讨论了agent anyvs agent none,但是这些都不妨碍使用master。
  • 该页面建议将所有内容包装在一个node节中,但这似乎迫使构建在主节点或指定节点上运行,这又再次导致代理平衡。

bir*_*230 5

您可以使用node('!master') {...}agent { label '!master' }语法。在此处查看更多详细信息。

Jenkins最佳实践页面上还有一个解决方案,用于设置主节点本身的限制:

如果您有一个更复杂的安全设置,该设置允许某些用户仅配置作业,而不能管理Jenkins,则需要阻止他们在主节点上运行构建,否则他们可以不受限制地访问JENKINS_HOME目录。您可以通过将执行程序计数设置为零来执行此操作。相反,请确保所有作业都在代理上运行。这样可以确保jenkins主服务器可以扩展以支持更多工作,并且还可以防止构建意外或恶意地修改$ JENKINS_HOME上的潜在敏感数据。如果您需要一些作业在主服务器上运行(例如,Jenkins本身的备份),请使用“ 作业限制插件”来限制可以在此处执行的作业。