2016-03-24 11 views
0

私たちはJenkins Job DSLプラグインを使用してコード内のすべてのジョブを構成し、変更を展開する前にテストするためにローカルのJenkinsステージング環境を使用します。 DSLが有効で、ジョブがすべて正しく作成されていることを確認したいとは思っていますが、私たちは何百ものジョブをローカルに構築することを望んでいません。Job DSLパラメータを上書きすることはできますか?

たとえば、パラメータをtriggerに上書きする方法はありますか。これはローカルではなく、すべてのGroovyファイルで行われますか?私はこれを行うカスタムライブラリファイルを書くことができると信じていますが、私たちのカスタムscm定義をインポートするために、すべてのGroovyファイルにインポート行を追加する必要があります。

明確にするために、特定の定義を優雅にまたは猿のパッチコードで上書きする方法を探しているので、すべてのGroovyファイルとジョブ定義に変更を加える必要はありません。ロット。

答えて

1

あなたは仕事を構築し、その後、あなたが手動でテストしたいジョブを起動することができ、それらをdisabled

job('example') { 
    disabled() 
} 

を設定することができます。

他のジョブタイプでも同じ方法が使用できます。私の作品は何

+0

ローカル環境でのみ無効にしたいのですが、変更されたバージョンで終了しました。私は、共通のDSLライブラリでbestPractices()メソッドを作成し、それをすべてのジョブの先頭に置き、そこにプロダクションフラグをチェックし、プロダクションフラグを無効にしました。十分に機能し、タイムアウト、ログのローテーション、およびその他の一般的な事柄を追加する共通の場所を提供します。 – mrooney

0

は次のとおりです。

  1. は、それが現在のホスト名に基づいて、本番またはテスト環境で実行しているかどうかによって、真/ falseを返す関数を追加します。例えば。私は生産インスタンスをjenkins.mydomain.comとして実行し、jenkinsをjenkins-test.mydomain.comとしてテストします。
  2. その

例えばに基づいてジョブの定義の中で、次に/他/場合を追加このように:

がJenkinsInstance.groovyにこれを入れて:

import jenkins.model.* 

// Representing the Jenkins server instance 
class JenkinsInstance { 
    // Determine if we're executing on a Jenkins production instance. 
    static Boolean isProd() { 
     if (Jenkins.getInstance().getRootUrl() ==~ ".*jenkins\\.mydomain\\..*") { 
      return true 
     } else { 
      return false 
     } 
    } 
} 

あなたはDSLが有効であることを確認するにはDSLスクリプトはこの

import JenkinsInstance 

freeStyleJob("myjobname") { 
    if (JenkinsInstance.isProd()) { 
    scm { 
     git { 
     ... 
     } 
    } 
    } else { 
    scm { 
    } 
    } 
} 
+0

ありがとう、申し訳ありません。私の目標は、無数のGroovyファイル全体に多くの広がりがあるので、各freeStyleJobの定義を変更する必要を避けることでした。私はJob DSLにパッチを当てて、すべてのファイルを変更する必要がないようにしたいと思っていました。 – mrooney

+0

私はこれをブランチ(git/svn)で分離し、コード内ではなくすることをお勧めします...したがって、テスト/プロダクト間のコードには違いはありません。 – khmarbaise

0

のように見えるあなたの雇用創出を持って、書き込みいくつかの単体テスト。いくつかの例はhereまたはhereです。特にthis testは、何も問題なく生成できる場合は、あなたに教えてくれます。ビルド自体が完了したかどうかをテストするためにローカルで生成する場合は、SeedJobがすべての設定を生成した後にシステムのGroovyスクリプトを使用して、すべての自動トリガを無効にすることができます。 Hereはそれを行う方法の例です。

関連する問題