2016-07-07 2 views
1

私は非常に単純なはずの一連のことをしようとしていますが、私には苦痛を与えています。高レベルでは、私は配列をループし、各値をそれ自身の配列を返さなければならないgradleタスクに渡したいと思います。私はこの配列を使用して、いくつかのJenkinsの設定をしたいと思っています。配列をループして各値をグラデルタスクに渡そう

私はこの作品を作るいくつかの方法を試してみましたが、ここに私の現在のセット・アップされています:私は本当にジェンキンスブロックがセットアップされてどのようにそれがうまくすでにだとして変更することはできません

project.ext.currentItemEvaluated = "microservice-1" 

task getSnapshotDependencies { 
    def item = currentItemEvaluated 
    def snapshotDependencies = [] 

    //this does a load of stuff like looping through gradle dependencies, 
    //which means this really needs to be a gradle task rather than a 
    //function etc. It eventually populates the snapshotDependencies array. 

    return snapshotDependencies 
} 

jenkins { 
    jobs { 
     def items = getItems() //returns an array of projects to loop through 
     items.each { item -> 
      "${item}-build" { 
       project.ext.currentItemEvaluated = item 
       def dependencies = project.getSnapshotDependencies 
       dsl { 
        configure configureLog() 
        //set some config here using the returned dependencies array 
      } 
     } 
    } 
} 

成熟したので、可能ならばその構造の中で仕事をする必要があります。

私は変数をタスクに渡そうとする試みをたくさん試しました。ここではプロジェクト変数を使用しています。この問題は、ジェンキンがブロックされる前にタスクが評価されているため、新しく設定されたcurrentItemEvaluated変数を使用してタスクを正しく評価する方法を理解できません。

他に何ができるのですか?

答えて

0

もう少し研究を重ねた結果、Gradleには「タスクを呼び出す」という概念はないということです。 Gradleタスクは、タスクとそれらの依存関係のグラフに過ぎないため、それらの依存関係に従った順序でコンパイルします。私は最終的にはGradleのタスクを呼び出すようにしようとせず、この問題を解決しなければならなかった

(私は、ファイルに関連するデータを印刷するビルドタスクを持っている、と私ジェンキンスブロックは、ファイルからの読み込み)

here

を参照してください。
関連する問題