1

FreeStyleProjectを新しいジョブにコピーしてから、groovyを使用して新しいupstreamprojectをこの新しいジョブに設定したいと思います。クラス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はアップストリーム)

両方のジョブをコピーしたいので、

ジョブA'とジョブB'を設定し、A'またはB'を設定して、A'を取得します=====>ジョブB'(A'はアップストリームです)

ビルドトリガーを削除して、新しいビルドトリガーを作成する必要があると思います(これが、アップストリーム/ダウンストリームの概念を作成するようです)

4

1 に答える 1

2

2つのFreeStyleプロジェクトと1つのダウンストリームのサンプルを使用して、このスニップはTestTopを検出し、それらを既存のTopTest2に設定します。コンセプトは、プロジェクトでgetPublishersListを使用してビルドトリガーを取得し、次にこれらのhudson.tasks.BuildTrigger.classを取得することです。

これらのそれぞれについて、公開リストを作成し
ます。(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()
于 2013-01-03T13:34:19.437 に答える