1

我想将 FreeStyleProject 复制到一个新工作,然后使用 groovy 为这个新工作设置一个新的上游项目。我在FreeStyleProject 类上找不到任何可以让我这样做的方法:设置一个新的上游项目。有没有其他方法或技巧可以做到这一点?

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 ====> 作业 B(A 是上游)

我想复制两个工作,所以我得到我

Job A' 和 Job B' 然后设置 A' 或 B' 所以我得到 A' =====> Job B' (A' 是上游)

我想我需要删除一个构建触发器并创建一个新的构建触发器(这似乎是创建上游/下游概念的原因)

4

1 回答 1

2

使用两个 FreeStyle 项目和一个下游项目的示例,此片段将找到 TestTop 并将它们设置为现有的 TopTest2。这个概念是在项目的getPublishersList的帮助下获取构建触发器,然后获取这些的 hudson.tasks.BuildTrigger.class。

为每一个做一个
发布列表。删除(aa)发布列表。添加(新 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()
于 2013-01-03T13:34:19.437 回答