从给定的 Jenkins 视图/选项卡禁用所有 Jenkins 作业
Disable all Jenkins jobs from a given Jenkins View / Tab
我在 Jenkins 中创建的名为 "Gradle Deploys" 的视图之一中有大约 100-120 个工作。如何仅从给定的视图/选项卡禁用 Jenkins 的所有作业。
我尝试了以下 groovy 语法,首先只显示给定视图中的所有作业,但它出错了。
jenkins = Hudson.instance
//The following works actually but gives a lot of info.
//println "----" + jenkins.instance.getView("Gradle Deploys").items
println "----" + jenkins.instance.getView("Gradle Deploys").items.each.getItems().print(it)
一旦我在给定视图中获得仅包含作业名称的列表,我只需在上述命令中使用“.disable()”函数即可。
如果我使用下面的代码,它会做我想做的,但我正在寻找一个单行代码。
for (item in jenkins.instance.getView("Gradle Deploys").items) {
println("\nJob: $item.name")
item.disabled=true
}
您应该可以通过以下方式禁用它们:
jenkins.instance.getView("Gradle Deploys").items*.disabled = true
但是如果你想同时打印一些东西,你需要一个each
jenkins.instance.getView("Gradle Deploys").items.each { item ->
println "\nJob: $item.name"
item.disabled = true
}
感谢蒂姆的解决方案。我adding/enhancing再进一步一点:
jenkins.instance.getView("Gradle Deploys").items*.disabled = true
但是如果你想同时打印一些东西,你需要一个 each
jenkins = Hudson.instance
jenkins.instance.getView("Gradle Deploys").items.each { item ->
println "\nJob: $item.name"
item.disabled = true
}
现在,如果您尝试从 "Script Console" 运行 上面的示例完美运行,但是如果您尝试 create/run 它作为 Scriptler 脚本(如下所示) ).
参见:以上代码在 Jenkins 的脚本控制台视图中有效(当您单击“管理 Jenkins”>“脚本控制台”时)。为此,您可能需要安装插件。
现在,当我尝试创建 Scripter 脚本时,相同的脚本不起作用,运行 就这样。这需要安装 Scriptler 插件。
要解决上述错误消息(如 Scriptler 脚本 - window 所示),您需要输入另一行(在顶部)。
最终脚本看起来像(注意:viewName 变量的值将由 Scriptler 参数提供,它将覆盖您在脚本本身中提到的任何内容):
//如果您通过 "Scriptler Script" 脚本方式 运行ning script/code,则需要以下行。
//通过这种方式,您可以提示用户提供参数(例如:viewName)并使用它仅在该视图中禁用作业。
import hudson.model.*
jenkins = Hudson.instance
println ""
println "--- Disabling all jobs in view: ${viewName}"
println ""
jenkins.instance.getView(viewName).items*.disabled = true
//Now the above will disable it but you still need to save it. Otherwise, you'll loose your changes (of disabling the jobs) after each Jenkins restart.
jenkins.instance.getView(viewName).items.each { item -> item.save() }
Jenkins.instance.getView("Gradle Deploys").items*.disabled = true
我在 Jenkins 中创建的名为 "Gradle Deploys" 的视图之一中有大约 100-120 个工作。如何仅从给定的视图/选项卡禁用 Jenkins 的所有作业。
我尝试了以下 groovy 语法,首先只显示给定视图中的所有作业,但它出错了。
jenkins = Hudson.instance
//The following works actually but gives a lot of info.
//println "----" + jenkins.instance.getView("Gradle Deploys").items
println "----" + jenkins.instance.getView("Gradle Deploys").items.each.getItems().print(it)
一旦我在给定视图中获得仅包含作业名称的列表,我只需在上述命令中使用“.disable()”函数即可。
如果我使用下面的代码,它会做我想做的,但我正在寻找一个单行代码。
for (item in jenkins.instance.getView("Gradle Deploys").items) {
println("\nJob: $item.name")
item.disabled=true
}
您应该可以通过以下方式禁用它们:
jenkins.instance.getView("Gradle Deploys").items*.disabled = true
但是如果你想同时打印一些东西,你需要一个each
jenkins.instance.getView("Gradle Deploys").items.each { item ->
println "\nJob: $item.name"
item.disabled = true
}
感谢蒂姆的解决方案。我adding/enhancing再进一步一点:
jenkins.instance.getView("Gradle Deploys").items*.disabled = true
但是如果你想同时打印一些东西,你需要一个 each
jenkins = Hudson.instance
jenkins.instance.getView("Gradle Deploys").items.each { item ->
println "\nJob: $item.name"
item.disabled = true
}
现在,如果您尝试从 "Script Console" 运行 上面的示例完美运行,但是如果您尝试 create/run 它作为 Scriptler 脚本(如下所示) ).
参见:以上代码在 Jenkins 的脚本控制台视图中有效(当您单击“管理 Jenkins”>“脚本控制台”时)。为此,您可能需要安装插件。
现在,当我尝试创建 Scripter 脚本时,相同的脚本不起作用,运行 就这样。这需要安装 Scriptler 插件。
要解决上述错误消息(如 Scriptler 脚本 - window 所示),您需要输入另一行(在顶部)。
最终脚本看起来像(注意:viewName 变量的值将由 Scriptler 参数提供,它将覆盖您在脚本本身中提到的任何内容):
//如果您通过 "Scriptler Script" 脚本方式 运行ning script/code,则需要以下行。 //通过这种方式,您可以提示用户提供参数(例如:viewName)并使用它仅在该视图中禁用作业。
import hudson.model.*
jenkins = Hudson.instance
println ""
println "--- Disabling all jobs in view: ${viewName}"
println ""
jenkins.instance.getView(viewName).items*.disabled = true
//Now the above will disable it but you still need to save it. Otherwise, you'll loose your changes (of disabling the jobs) after each Jenkins restart.
jenkins.instance.getView(viewName).items.each { item -> item.save() }
Jenkins.instance.getView("Gradle Deploys").items*.disabled = true