我想将FreeStyleProject复制到一个新作业,然后使用groovy为这个新作业设置一个新的upstreamproject。 我在Class FreeStyleProject上找不到任何让我这样做的方法: 设置一个新的upstreamproject。是否有其他方法或技巧可以实现这一目标?
def x = "testproj"
def hi=hi.getItem(x)
hi.copy(x, "Copy"+x);
def newjob=hi.getItem("Copy"+x)
//newjob.setUpstreamProject("bar") //<<--?
def di = newjob.getUpstreamProjects()
for ( y in di ) {
println(y.name)
}
更新 澄清:
工作A ====&gt;工作B(A在上游)
我想复制两份工作,所以我得到了
工作A'和工作B',然后设置A'或B',我得到 A'=====&gt;工作B'(A'在上游)
我认为我需要删除构建触发器并创建一个新的构建触发器(这就是创建上游/下游概念的原因)
答案 0 :(得分:2)
通过两个FreeStyle项目和一个下游项目的示例,此剪辑将找到TestTop并将它们设置为现有的TopTest2。 这个概念是在项目的 getPublishersList 的帮助下获得构建触发器然后 获取这些的hudson.tasks.BuildTrigger.class。
对于这些中的每一个都做一个 publishlist。的删除(AA) publishlist。 add (new hudson.tasks.BuildTrigger(“TestTop2”,false))
def hudsonInstance = hudson.model.Hudson.instance
hudsonInstance.getItems(hudson.model.Project).each {project ->
if (project.displayName== "TestTop"){
println(project.displayName)
def di = project.getUpstreamProjects()
def triggers=project.getBuildTriggerUpstreamProjects()
for (z in triggers){
println("triggers " + z.getDisplayName())
def pubList = z.getPublishersList()
for(w in pubList){
println(w)
def buildTrigger = w.grep(hudson.tasks.BuildTrigger.class)
println("BT " + buildTrigger)
for(aa in buildTrigger){
println("aa " + aa.getChildProjectsValue())
def newtop = hudsonInstance.getItem("TestTop2")
pubList.remove(aa)
pubList.add( new hudson.tasks.BuildTrigger("TestTop2", false))
}
}
}
}
}
hudsonInstance.rebuildDependencyGraph()