删除旧版本但使用文件夹的正确作业名称是什么?

删除旧版本但使用文件夹的正确作业名称是什么?

我阅读了这些链接:

首先,我围绕这些进行工作Folders,这些分别包含Views和这些Jobs

请考虑以下内容(为了简单起见):

  • 文件夹jenkins-01 看法: α工作: 执行
  • 文件夹jenkins-02 看法: 贝他克斯工作: 执行

从以上两个重要观察可以看出:

  • jenkins-01jenkins-02 文件夹针对两个不同的项目。
  • Execute 工作,可以重复在许多不同的文件夹,但仅限于名字。

现在考虑以下情况:

我可以通过以下Job方式执行:

风俗 View- 因此默认的默认All/通用视图:

  • http://localhost:9090/job/jenkins-01/job/Execute/

通过许多视图,假设

  • http://localhost:9090/job/jenkins-01/view/alpha/job/Execute/
  • http://localhost:9090/job/jenkins-01/view/betax/job/Execute/

所有构建的历史记录或轨迹都位于以下路径位置:

  • /Users/username/ci/jenkins/Contents/jobs/jenkins-01/jobs/Execute

脚本控制台

通过以下方式:

def jobName = ???

println jobName;

//I used any of them
//def job = Jenkins.getInstance().getItemByFullName(jobName, Job.class)
//def job = Jenkins.instance.getItem(jobName)

if(job != null) {
     job.getBuilds().each { println it }  
   //job.getBuilds().each { it.delete() }  
   //job.nextBuildNumber = 1   
   //job.save()
}
else
    println 'job is NULL'

我尝试了许多关于jobName(关于???) 的组合,但总是得到null。那么 的正确值应该是多少jobName

命令行

  • java -jar jenkins-cli.jar -s http://localhost:9090 delete-builds jobName=??? '1-56'

再次:正确的值应该是什么jobName

记住:每个都Job在一个中声明Folder,并且作业的名称(只是名称)可以在许多Folders

答案1

对于一份工作来说,只有一条权威的路径——那job.fullName就是

http://localhost:9090/job/jenkins-01/job/Execute/

这将为您提供fullName所有工作:

Jenkins.instance.allItems.findAll() 
    { it instanceof AbstractProject }.each 
    {println it.fullName}

视图只是要显示的经过筛选的作业列表。您应该在每个视图中看到相同的作业历史记录。

注意:不幸的是,Jenkins 允许使用同名的作业,如果你“移动”一份作业,你可能会破坏另一个文件夹中同名的另一份作业。

更新:以下代码将选择所有“顶级”文件夹并对其进行迭代,列出每个文件夹的内容。注意递归处理的条件(或不递归处理)。作业的句柄永远只有一个,即it.fullName

您可以添加其他条件以将范围限制为特定文件夹或作业名称模式。

import com.cloudbees.hudson.plugins.folder.*

Folders =  Jenkins.instance.allItems.findAll() 
    { it instanceof com.cloudbees.hudson.plugins.folder.Folder && !it.fullName.contains("/")  
    // remove the && condition to retrieve nested folders
}

Folders.collect { folder ->
  println "::: " + folder.fullName
    // use folder.getItems().findAll() below to not recurse into nested folders
    folder.allItems.findAll()
    { it instanceof AbstractProject }.each 
    { println folder.fullName + ' - ' + it.fullName }
}
return

相关内容