不带目录批量复制job
def sourceRegex = "im-dev-.*"// 匹配原始流水线的名字(正则)def findStr = "dev"// 要查找的字符。def replaceStr = "dt-dev"// 替换后的字符。// ================= 配置区 =================println "--- 开始在根目录(/)批量克隆 ---"println "--- 执行完成
·
改配置区域替换成你的流水线名字就可以
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 "--- 执行完成 ---"
更多推荐
所有评论(0)