我们有一个大的Hudson设置,其中有许多预定的构建一直在运行。目前我正在尝试使一个版本正常工作,但我必须偶尔等待一个预定的构建进入队列。有没有办法禁用所有预定的构建,所以我可以专注于我麻烦的构建,而无需调整每个单独构建的“cron”设置?
答案 0 :(得分:4)
告诉它准备关闭。
从OP编辑(banjollity)
它并不完美,但我认为这是一个合理的“几个鼠标点击解决方案和默认安装”的解决方案,因此是公认的答案。
答案 1 :(得分:4)
我提供的'configuration slicing'插件允许您同时修改许多作业的cron设置。这应该允许您进行所需的批量更改。
答案 2 :(得分:2)
根据Mikezx6r的建议,我想出了一个快速方法来禁用与某个字符串匹配的所有构建:
[user@server jobs] $ for i in *build_name*; do sed -i s/"disabled>false"/"disabled>true/" $i/config.xml; done
您还可以在“for”循环中迭代特定的构建名称:
[user@server jobs] $ for i in build1 build2 build3; do sed -i s/"disabled>false"/"disabled>true/" $i/config.xml; done
你可以先测试它,看看在sed之前放一个“echo”会做什么:
[user@server jobs] $ for i in build1 build2 build3; do echo sed -i s/"disabled>false"/"disabled>true/" $i/config.xml; done
相反,您可以通过切换sed脚本重新启用所有匹配的作业:
[user@server jobs] $ for i in build1 build2 build3; do sed -i s/"disabled>true"/"disabled>false/" $i/config.xml; done
答案 3 :(得分:0)
我没有看到直接的方法,但是您可以编写一些更新所有作业的config.xml的内容。
在hudson的每个作业目录中,都有一个config.xml。 < project>有一个名为disabled的元素,你可以更新为true,从而禁用该构建。
不理想,但是一旦你有了脚本来遍历目录并更改了禁用的值,你就可以随时使用它。
答案 4 :(得分:0)
搜索类似的东西让我想到了这个问题,我意识到Michael Donohue的答案(以及他贡献的插件)还有另一个好处。
通过“配置切片”,可以轻松地同时禁用一部分作业。这正是我需要暂时禁用8个相关工作中的7个所以我可以在8日工作。谢谢迈克尔!
答案 5 :(得分:0)
这可以使用jenkins控制台完成。它运行groovy脚本,几乎可以做任何事情。
以下脚本遍历所有项目。检查它是否有TimerTrigger。(也可以扩展对其他触发器的检查)
import hudson.model.Hudson
import hudson.model.Project
import hudson.triggers.TimerTrigger
import hudson.triggers.Trigger
import hudson.triggers.TriggerDescriptor
//All the projects on which we can apply the getBuilders method
def allProjects = Hudson.instance.items.findAll { it instanceof Project }
def projectsToWorkOn = [];
allProjects.each { Project project ->
Map<TriggerDescriptor, Trigger> triggers =
project.getTriggers();
triggers.each { trigger ->
if (trigger.value instanceof TimerTrigger) {
projectsToWorkOn.push(project)
}
}
}
projectsToWorkOn
.each { Project project ->
project.disable();
project.save()
}