22

我的 hudson CI 上有大约 100 个工作,可以批量删除它们吗?

4

4 回答 4

46

恕我直言,最简单的方法是使用脚本。去http://your.hudson.url/script/

通过运行删除作业:

for(j in hudson.model.Hudson.theInstance.getProjects()) {
    j.delete();
}

通过这种方式,您可以轻松地使用条件过滤掉要删除的作业。


对于詹金斯

当前版本(2.x):

for(j in jenkins.model.Jenkins.theInstance.getAllItems()) {
    j.delete()
}

旧版本:

for(j in jenkins.model.Jenkins.getInstance().getProjects()) {
    j.delete();
}
于 2012-01-19T15:36:49.537 回答
15

只需删除作业目录:

cd $HUDSON_HOME/jobs
rm -rf <JOB_NAME>

请参阅:管理 Hudson

于 2011-02-22T09:31:20.597 回答
7

您可以以编程方式使用XML api(或者如果您愿意,也可以使用 JSON 风格):

http://your.hudson.url/api/xml?xpath=//job/name&wrapper=jobs

回报:

<jobs>
    <name>firstJob</name>
    <name>secondJob</name>
    <!-- etc -->
</jobs>

现在遍历作业名称并执行发布请求

 http://your.hudson.url/job/your.job.name/doDelete

(您可以使用任何您喜欢的支持 XML 和 HTTP 的编程语言来执行此操作)

于 2011-02-22T09:32:12.780 回答
3

对于运行 500 多个构建作业的 Hudson 实例,我遇到了类似的可管理性问题——使用 gui 手动维护这么多作业是不切实际的。但是,您可以使用 CLI 以远程和编程方式在 Hudson 中配置作业 - 它作为 jar 文件[http://wiki.hudson-ci.org/display/HUDSON/Hudson+CLI]提供。

The command to delete a job would be something like:
**java -jar hudson-cli.jar -s http://host:port/ delete-job jobname**

And the rest of the commands you will need are here:
**java -jar hudson-cli.jar -s http://host:port/** help

我将 cli 包装在 python 中并创建了一个 XML 文件来保存构建配置 - 然后我可以使用它来操作我正在运行的 Hudson 实例。这还提供了将 CI 实例“重置”回已知配置的能力 - 如果您怀疑构建失败是由 UI 中的手动更改引起的,或者您为部署到的每个环境使用不同的 CI 服务器(即 dev , test, prod) 并且需要提供一个新的。

当写得不好的插件破坏了 Hudson 自己的 XML 并且我需要重建我的实例时,这也让我摆脱了一些束缚。Hudson 也是 I/O 绑定的,对于真正加载的实例,从头开始启动 Hudson 并以这种方式填充它的配置通常更快。

于 2013-07-26T18:52:43.660 回答