How to move jenkins job to sub folder?

前端 未结 4 963
梦谈多话
梦谈多话 2020-12-06 09:02

I have 10 jenkins job in folder foo. I have created a new sub folder baar in folder foo. How to move the 10 jobs from folder foo

相关标签:
4条回答
  • 2020-12-06 09:40

    First, you need to install cloudbees folder plugin then you will see Move option in jobs

    click on it,then option(drop down) will come where you want to move

    select and move

    0 讨论(0)
  • 2020-12-06 09:52

    As @Pratik Anand mentionned you will first need to install the CloudBees Folders Plugin.

    However, if you want to move many projects at the same time, it is much faster to do it with the script console. This groovy script does the trick :

    def FOLDER_NAME = '<An existing destination folder>'
    def JOB_REGEX = '<A regex to find your jobs>'
    
    import jenkins.*
    import jenkins.model.*
    import hudson.*
    import hudson.model.*
    
    jenkins = Jenkins.instance
    
    def folder = jenkins.getItemByFullName(FOLDER_NAME)
    if (folder == null) {
      println "ERROR: Folder '$FOLDER_NAME' not found"
      return
    }
    
    // Find jobs in main folder
    def found = jenkins.items.grep { it.name =~ "${JOB_REGEX}" }
    println "Searching main folder : $found"
    
    // Find jobs in other subfolders
    jenkins.items.grep { it instanceof com.cloudbees.hudson.plugins.folder.Folder }.each { subfolder -> 
      if(!subfolder.getName().equals(FOLDER_NAME))
      {
        println "Searching folder '$subfolder.name'"
        subfolder.getItems().grep { it.name =~ "${JOB_REGEX}" }.each { job ->
          println "Found $job.name"
          found.add(job);
        }
      }
    }
    
    // Move them
    found.each { job ->
      println "Moving '$job.name' to '$folder.name'"
      Items.move(job, folder)
    }
    

    I used Daniel Serodio's reply in this thread and modified it to search subfolders also. Note that this is not fully recursive.

    0 讨论(0)
  • 2020-12-06 09:57

    If your jobs are written in DSL, you can create a folder thus:

    folder("foo") {
      displayName('foo')
      description('A folder with all my foo')
    }
    
    folder("baar") {
      displayName('baar')
      description('A folder with all my baar')
    }
    

    Then, in your dsl for your jobs, you simply have to reference that folder in the job creation:

    job('baar/myJob') {
      description('A job which now lives in the baar folder.')
      ...
    }
    

    Once the DSL plugin processes your job you will see it in that folder. However, the folder has to already exist, so I generally name my folder DSL something like all_folders.groovy so it gets processed first. If you don't specify a folder in the job declaration it will be in the main Jenkins view.

    0 讨论(0)
  • 2020-12-06 09:59

    Did you try to use the plugin folder ?

    https://wiki.jenkins-ci.org/display/JENKINS/CloudBees+Folders+Plugin

    You can then move the jobs with the function: "move"

    0 讨论(0)
提交回复
热议问题