改配置区域替换成你的流水线名字就可以

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

// ================= 配置区 =================
def sourceRegex = "htsy-dt-dev-.*"        // 匹配原始流水线的名字(正则)
def findStr = "dev"                      // 要查找的字符
def replaceStr = "prod"                  // 替换后的字符
// ==========================================

def jenkins = Jenkins.get()

println "--- 开始在根目录(/)批量克隆 ---"

// 仅获取根目录下的第一层任务,不进入子文件夹
jenkins.getItems().each { item ->
    // 1. 确保是Job(流水线/自由风格)
    // 2. 排除文件夹(Folder)
    // 3. 匹配正则表达式
    if (item instanceof Job && !(item instanceof Folder) && item.name.matches(sourceRegex)) {
        
        def newJobName = item.name.replace(findStr, replaceStr)
        
        // 检查根目录下是否已存在同名任务
        if (jenkins.getItem(newJobName) != null) {
            println "[跳过] 根目录下已存在: ${newJobName}"
        } else {
            try {
                // 直接在根目录复制任务
                jenkins.copy(item, newJobName)
                println "[成功] 复制 ${item.name} -> ${newJobName}"
            } catch (Exception e) {
                println "[失败] 复制 ${item.name} 出错: ${e.message}"
            }
        }
    }
}

println "--- 执行完成 ---"

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐