哈德森CI:如何删除所有工作?

KJW*_*KJW 21 hudson jenkins

我的哈德森CI上有大约100个工作岗位,可以批量删除它们吗?

Ser*_*nev 43

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

通过运行删除作业:

for(j in hudson.model.Hudson.theInstance.getProjects()) {
    j.delete();
}
Run Code Online (Sandbox Code Playgroud)

这种方式为您提供了一个选项,可以轻松使用条件来过滤掉要删除的作业.


为JENKINS

当前版本(2.x):

for(j in jenkins.model.Jenkins.theInstance.getAllItems()) {
    j.delete()
}
Run Code Online (Sandbox Code Playgroud)

旧版本:

for(j in jenkins.model.Jenkins.getInstance().getProjects()) {
    j.delete();
}
Run Code Online (Sandbox Code Playgroud)

  • 在最近的jenkins版本中,现在需要:`for(j in jenkins.model.Jenkins.theInstance.getAllItems()){j.delete()}` (8认同)
  • 我得到了一个_No这样的属性:theInstance for class:hudson.model.Hudson_ error,做了一些研究并最终使用`(hudson.model.Hudson.instance.items.findAll {job - > job.name =〜/ my- job-pattern - .*/}).each {to_delete - > println("删除工作区"+ to_delete); to_delete.delete()}`(其中_my-job-pattern.*_是一个常规的正则表达式) (5认同)

dog*_*ane 15

只需删除作业目录:

cd $HUDSON_HOME/jobs
rm -rf <JOB_NAME>
Run Code Online (Sandbox Code Playgroud)

请参阅:管理Hudson

  • 猜猜这让我看起来很复杂:-) (2认同)
  • 但如果你使用共享的哈德森,你的方式会更好:) (2认同)

Sea*_*oyd 7

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

http://your.hudson.url/api/xml?xpath=//job/name&wrapper=jobs
Run Code Online (Sandbox Code Playgroud)

返回:

<jobs>
    <name>firstJob</name>
    <name>secondJob</name>
    <!-- etc -->
</jobs>
Run Code Online (Sandbox Code Playgroud)

现在迭代作业名称并发布一个帖子请求

 http://your.hudson.url/job/your.job.name/doDelete
Run Code Online (Sandbox Code Playgroud)

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