2017-10-12 6 views
0

私はJenkinsの作成を完全に自動化しようとしています。私はgroovyスクリプトを使用してセットアップのほとんどを動作させました。私の最後のハードルは、DSLを使って仕事を作り出すことです。Jenkins:DSLを使用してジョブの作成を自動化

import jenkins.model.* 

def jobName = "jobname" 
String configXml = new File('/jobname.xml').getText('UTF-8') 
def xmlStream = new ByteArrayInputStream(configXml.getBytes()) 
Jenkins.instance.createProjectFromXML(jobName, xmlStream) 

XMLファイルを使用してジョブを作成することはできますが、XMLファイルは維持しにくく、わかりやすくありません。だから、私はDSL構文を使用するように切り替えたいのですが、createPrjectFromDSLのようなものでcreateProjectFromXML(...)を置き換えるAPIを修正することはできませんか?

私の質問は、DSLを使用して新しいジョブを作成する方法です。私はこの部分を働かせました、ありがとう。

しかし、私の次の質問は、ジェンキンスが起動時にジョブを作成するように、このファイルをどこに置くのですか?私は/var/jenkins_home/init.groovy.dし、それをコピーしようとすると私は、起動時に次の例外を取得:

WARNING:スクリプトファイルの実行に失敗しました:/var/jenkins_home/init.groovy.d/ neoconfig-dsl.groovy groovy.lang.MissingMethodException:メソッドのシグネチャがありません:引数タイプにはneoconfig-dsl.job()を使用できます。(java.lang.String、neoconfig-dsl $ _run_closure1)values:[neo、neoconfig- 7d799f93 @のDSLの$ _run_closure1] 考えられる解決策:実行()、実行()、任意の()、待って()、grepを()、(ダンプ)

+0

リモートリポジトリからDSLジョブをフェッチしてビルドするプロジェクトを作成できます。 – Opal

+0

私が探しているものだと思います。もう少し詳しく説明できますか?私の目標は、ジョブDSLを使用して私のすべての仕事の作成を自動化することです。 – Gerb

答えて

1

ジェンキンスJob DSLプラグインは、あなたがいるように見える正確に、何を提供探している:A(Groovyベース)DSLを使用してジョブを定義します。

次のように簡単なジョブ定義が見えます:

def repo = 'DSL-Tutorial-1-Test' 
job(repo) { 
    scm { 
     git('git://github.com/quidryan/aws-sdk-test.git') 
    } 
    triggers { 
     scm('H/15 * * * *') 
    } 
    steps { 
     maven('-e clean test') 
    } 
} 

EDIT:自動的に次のコードを追加し、定義した後、このジョブを開始するには:

// automatically queue the job after the initial creation 
if (!jenkins.model.Jenkins.instance.getItemByFullName(repo)) { 
    queue(repo) 
} 

その設定の完全な例セルフブートストラッピングドッカーコンテナを作成するにはtknerr/jenkins-pipes-infraがあります。私は(ほとんど)同じアプローチhereを使用しています。

+0

ジョブ定義が作成されたら、このジョブ定義を何らかのスクリプトを使って実行するにはどうすればいいですか?私の目標は、起動時にすべてのジョブ定義でJenkinsをコンテナに完全に設定させることです。 – Gerb

+0

私は自分の答えを更新しました。非常に有効な点:-) – StephenKing

+0

ありがとう!これはまさに私が探していたものです。 – Gerb

関連する問題