jenkins:用命令行删除旧版本

我删除了老jenkins与rm工作托pipe的版本:

 my_job/builds/$ rm -rf [1-9]* 

这些旧版本在作业页面中仍然可见。 如何使用命令行删除它们?
(没有每个构build用户界面中的删除button)

它看起来像已经添加到CLI,或者至less正在工作: http : //jenkins.361315.n4.nabble.com/How-to-purge-old-builds-td385290.html

语法会是这样的: java -jar jenkins-cli.jar -s http://my.jenkins.host delete-builds myproject '1-7499' --username $user --password $password

这是另一个选项:用cURL远程删除构build。 (用您使用浏览器访问Jenkins的任何内容replaceURL的开头。)

 $ curl -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll 

以上删除作业myJob构build#1到#56。

如果在Jenkins实例上启用了身份validation,则必须提供用户名和API令牌,如下所示:

 $ curl -u userName:apiToken -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll 

必须从Jenkins的/ me / configure页面获取API令牌。 只需点击“显示API令牌…”button即可显示用户名和API令牌。

编辑:正如yegeniy在下面的评论中指出的,根据configuration,可能需要在上面的URL中用doDeletereplacedoDeleteAll ,以使其工作。

删除所有jenkins作业版本的命令

 /jenkins_home/jobs> rm -rf */builds/* 

删除后应重新加载configuration:

 "Manage Jenkins" ==> "Reload Configuration from Disk" 

你可以通过使用Hudson API的Groovy脚本来实现。访问你的jenkins安装

 http://localhost:38080/script. 

例如,使用以下脚本删除所有项目的所有旧版本:注意:如果使用指纹,请注意,您将丢失所有历史logging。

 import hudson.model.* // For each project for(item in Hudson.instance.items) { // check that job is not building if(!item.isBuilding()) { System.out.println("Deleting all builds of job "+item.name) for(build in item.getBuilds()){ build.delete() } } else { System.out.println("Skipping job "+item.name+", currently building") } } 

或者用于清洁所有工作区:

 import hudson.model.* // For each project for(item in Hudson.instance.items) { // check that job is not building if(!item.isBuilding()) { println("Wiping out workspace of job "+item.name) item.doDoWipeOutWorkspace() } else { println("Skipping job "+item.name+", currently building") } } 

Jenkins wiki上有很多例子

是否有一个原因,你需要手动这样做,而不是让jenkins删除旧版本?

您可以根据天数或构build数量来更改作业configuration,以自动删除旧版本。 jenkins不用担心这个问题,也不需要跟踪,jenkins就是为你做的。

以下脚本清除旧作业的构build。 如果您手动删除构build,则应该从磁盘重新加载configuration:

 import hudson.model.* for(item in Hudson.instance.items) { if (!item.isBuilding()) { println("Deleting old builds of job " + item.name) for (build in item.getBuilds()) { //delete all except the last if (build.getNumber() < item.getLastBuild().getNumber()) { println "delete " + build try { build.delete() } catch (Exception e) { println e } } } } else { println("Skipping job " + item.name + ", currently building") } } 

从Jenkins Scriptler控制台运行以下Groovy脚本删除在视图下列出的所有作业的构build:

 import jenkins.model.Jenkins hudson.model.Hudson.instance.getView('<ViewName>').items.each() { println it.fullDisplayName def jobname = it.fullDisplayName def item = hudson.model.Hudson.instance.getItem(jobname) def build = item.getLastBuild() if (item.getLastBuild() != null) { Jenkins.instance.getItemByFullName(jobname).builds.findAll { it.number <= build.getNumber() }.each { it.delete() } } } 

转到在Jenkins中configuration作业面板,find源代码pipe理 – >其他行为 – >单击添加,select清理前结帐。 jenkins将清理这个版本的旧版本