Jenkins:使用命令行删除旧版本

Phi*_*ayo 46 jenkins

我删除rm托管作业的旧jenkins构建:

my_job/builds/$ rm -rf [1-9]*
Run Code Online (Sandbox Code Playgroud)

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

Erw*_*and 52

这是另一种选择:使用cURL远程删除构建.(将URL的开头替换为您用浏览器访问Jenkins的任何内容.)

$ curl -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
Run Code Online (Sandbox Code Playgroud)

以上删除了作业myJob的#1到#56.

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

$ curl -u userName:apiToken -X POST http://jenkins-host.tld:8080/jenkins/job/myJob/[1-56]/doDeleteAll
Run Code Online (Sandbox Code Playgroud)

必须从Jenkins的/ me/configure页面获取API令牌.只需单击"Show API Token ..."按钮即可显示用户名和API令牌.

编辑:正如在下面评论中指出yegeniy,一个可能需要更换doDeleteAlldoDelete在上面的网址,使这项工作,根据不同的配置.

  • 我不得不使用`doDelete`而不是`doDeleteAll`.可能不是詹金斯的正确版本. (11认同)

CIG*_*Guy 41

看起来这已经被添加到CLI中,或者至少被用于: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

  • 你没有提到`jenkins-cli.jar`的位置:你的Jenkins安装会告诉你这个页面的位置:`http:// localhost:8080/cli /`. (12认同)

qxo*_*qxo 24

  1. 检查你的家jenkins目录:
    • "管理Jenkins"==>"配置系统" 在此输入图像描述
    • 检查字段"主目录"(通常是 / var/lib/jenkins)

用于删除所有jenkins作业构建的命令

/jenkins_home/jobs> rm -rf */builds/*
Run Code Online (Sandbox Code Playgroud)
  1. 删除后应重新加载配置:

    • "管理Jenkins"==>"从磁盘重新加载配置"

在此输入图像描述


Edu*_*cio 11

您可以使用Hudson API通过Groovy脚本执行此操作.访问您的jenkins安装程序

http://localhost:38080/script.
Run Code Online (Sandbox Code Playgroud)

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

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")
  }
}
Run Code Online (Sandbox Code Playgroud)

或清理所有工作区:

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")
  }
}
Run Code Online (Sandbox Code Playgroud)

Jenkins wiki上有很多例子


Den*_* S. 7

有没有你需要手动执行此操作,而不是让詹金斯删除旧的建立你的理由吗?

您可以根据天数或构建数更改作业配置以自动删除旧构建.不再担心它或不得不跟踪,詹金斯只是为你做.

  • 我发现这在您创建项目时很有用,并且在正确设置之前会出现多次失败.完成之后,我想清除旧的错误构建,因为它们最终只是噪音 (8认同)
  • 它在每个作业的配置中.选中Discard Old Builds复选框,可以使用选项来控制删除旧构建的方式. (2认同)