需求描述
每有一个新的项目,就要把现有环境的所有任务都再复制一遍,一个一个的太烦琐了,且不敢保证能100%正确,所以有没有一个脚本可以代替我们去批量执行呢? groovy脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | import hudson.model.* //源view def str_view = "old-view" //目标view def str_new_view = "new-view" //源job名称(模糊匹配) def str_search = "aaaaa" //目标job名称(模糊匹配后替换) def str_replace = "bbbbb" def view = Hudson.instance.getView(str_view) //copy all projects of a view for(item in view.getItems()) { //create the new project name newName = item.getName().replace(str_search, str_replace) // copy the job, disable and save it def job try { //因为第一次导入后报错,所以添加了try-catch 跳过已存在的job job = Hudson.instance.copy(item, newName) } catch(IllegalArgumentException e) { println(e.toString()) println("$newName job is exists") continue } catch(Exception e) { println(e.toString()) continue } //是否禁用任务,false不禁用,true禁用 job.disabled = false job.save() Hudson.instance.getView(str_new_view).add(job) println(" $item.name copied as $newName") } |
---|
该脚本的意思是:将old-view视图内的所有任务,全部复制一份到new-view内,且由原来的aaaa开头的任务,改名为bbbb开头的。