【问题标题】:Setting number of executors in Jenkins using Groovy使用 Groovy 在 Jenkins 中设置执行者的数量
【发布时间】:2014-02-26 02:08:24
【问题描述】:

我正在尝试使用 Groovy 在 Jenkins 中设置执行者的数量。我找到了一个方法 hudson.model.Hudson.instance.setNumExecutors(int) 但它似乎并没有真正起作用。问题是在我运行 Groovy 脚本后,修改后的值出现在配置面板中,但我必须在该面板中单击“保存”才能真正更改它。

这是代码(使用 Jenkins Groovy 插件作为构建步骤执行):

import hudson.model.*

// Initial number of executors is 1, let's increase the number of executors to 2
Hudson hudson = Hudson.getInstance()
hudson.setNumExecutors(2)
hudson.save()

def job = hudson.getJob("some_other_job")
def future = job.scheduleBuild2(0, new Cause.UpstreamCause(build))
subBuild = future.get()

// Set the number of executors back to 1
hudson.setNumExecutors(1)
hudson.save()

【问题讨论】:

    标签: groovy jenkins jenkins-plugins


    【解决方案1】:

    解决方法是在调用setNumExecutors()之后再调用hudson.setNodes(hudson.getNodes())

    【讨论】:

      【解决方案2】:

      如果一切正常,除了您必须手动按下保存按钮以使更改生效,那么听起来您在进行更改后没有在 Jenkins 实例上调用 save

      【讨论】:

      • 这就是我最初的想法,但我尝试调用 save() 并没有改变任何东西 - 我仍然看到相同的行为。
      • 添加了代码。正如您最初看到的那样,有 1 个执行器,然后我尝试添加一个新的执行器来安排一个作业。由于没有添加新的执行器,所以脚本中调度的作业无法启动,所以一切都被阻塞了。
      • 像这样调用setNumExecutors 似乎太容易了。我怀疑需要发生其他事情,例如在特定计算机上创建一个新的执行程序。此外,这是一个很长的镜头,但您可以尝试使用 jenkins.model.Jenkins.getInstance() 而不是 Hudson。
      • 我已经尝试使用jenkins.model.Jenkins.getInstance() - 不幸的是没有效果。我检查了setNumExecutors() 的实现,它实际上在设置新的执行器数量后在内部调用了save()。另一种可能性是它是一个错误......
      猜你喜欢
      • 2021-11-16
      • 2020-05-03
      • 2015-08-25
      • 1970-01-01
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多