gpt4 book ai didi

hudson - 如何触发手动清理 Hudson 工作区

转载 作者:行者123 更新时间:2023-12-01 15:23:41 31 4
gpt4 key购买 nike

我们有一个包含八个节点的 Hudson 集群。当某个特定的代码分支不再处于事件状态时,我们会禁用构建作业,但该作业的工作区仍然会占用所有节点上的空间。

我正在寻找一种在所有节点上触发工作区清理的方法。请注意,我不是在寻找“构建前干净的工作区”解决方案。

最佳答案

您不需要编写插件。您可以编写使用 Groovy plugin 的作业编写一个 Groovy 系统脚本。比如说,这项工作每晚都会运行。它将识别禁用的项目并清除其工作区。这是指向 Hudson Model API 的链接您的脚本将使用。在 http://<hudson-server>/script 有一个 Groovy 脚本控制台这对调试非常有用。

这是一个应该对您有直接好处的代码片段。在脚本控制台中运行它并检查输出:

def hi = hudson.model.Hudson.instance
hi.getItems(hudson.model.Job).each {
job ->
println(job.displayName)
println(job.isDisabled())
println(job.workspace)
}

您还可以在 this answer 中找到代码片段有用。他们指的是 Jenkins API,但在这个层面上,我认为 Jenkins 和 Hudson 之间没有区别。

更新:

以下是在多个从站上执行此操作的方法:创建一个在所有从站上运行的多配置作业(也称为“矩阵作业”)。在每个从站上,以下系统 Groovy 脚本将为您提供每个作业在该从站上的工作区(以及启用/禁用标志):
def hi = hudson.model.Hudson.instance

def thr = Thread.currentThread()
def build = thr?.executable
def node = build.executor.owner.node

hi.getItems(hudson.model.Job).each {
job ->
println("---------")
println(job.displayName)
println(job.isDisabled())
println(node.getWorkspaceFor(job))
}

当脚本在从站本身上运行时,您可以直接从中清除工作区。当然,工作空间可能不存在,但这不是问题。请注意,您只编写一次脚本 - Jenkins 将自动在您在矩阵作业中指定的所有从站上运行它。

关于hudson - 如何触发手动清理 Hudson 工作区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11387762/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com