2016-08-17 19 views
3

Jenkinsのジョブ生成プロセスを統一し、プロセスジョブDSLステップに渡す単一のファイルを作成したいと考えています。Jenkins:複数のDSLファイルを1つにまとめる

私は現在のリリースのDSLに含まれているファイルを変更することができます。

.. 
Release.groovy 
FirstPipeline.groovy 
SecondPipeline.groovy 

そして、私はRelease.groovyに両方のパイプラインまたは単なるパイプラインを含めるようにします。

パイプラインファイルの内部にはクラス構造がありませんので、をライブラリのようにインポートできません。

import mylibs.jobs.UsefulJob1 
import mylibs.jobs.UsefulJob2 
import mylibs.jobs.FirstPipeline 

def firstPipeline = new FirstPipeline() 

multiJob(firstPipeline.name) { 
    // multijob steps 
} 

私はを評価するが、それはそれだけの単純なスクリプトのために働くことが判明し使用しようとした:それはこのようなだけで何かを持っています。また、インポートされたライブラリやメタプログラミングのより複雑な階層で使用すると、ほとんど解釈できないエラーで失敗します。

+1

そして、私の場合にはfirstPipelineは次のようになります。私はこれらのスクリプトをクラスにリファクタリングすることに終わった。次に、それらを単にインポートすることができます。 –

答えて

3

答えが不思議な人のために。私はこれらのスクリプトをクラスにリファクタリングすることに終わった。

package pipelines 

import mylibs.jobs.UsefulJob1 
import mylibs.jobs.UsefulJob2 

import javaposse.jobdsl.dsl.DslFactory 

class FirstPipeline { 

    public FirstPipeline(DslFactory dslFactory) { 
    dslFactory.multiJob('first_pipeline') { 
     // multijob steps 
    } 
    } 
} 

次に使用すると、1つのファイルにそれらをすべて集めることができます:答えは何があるか疑問に思う人のために

import pipelines.FirstPipeline 
import pipelines.SecondPipeline 

new FirstPipeline(this) 
new SecondPipeline(this) 
関連する問題