web-dev-qa-db-ja.com

Jenkinsジョブのパラメーターの(値の母集団ではなく)動的または条件付きの表示

app(Application)とsvc(Service)の2種類以上のプロジェクトがあり、たくさんのJenkinsジョブ(共通ジョブ)を作成したとしましょうパラメータの。 この一般的なジョブは、別のダウンストリーム/個々のプロジェクトタイプのジョブ(他のプロジェクトビルドなどをトリガーし、それぞれのパラメーターを渡す)を呼び出す可能性がありますが、この質問の範囲外です

例:
PROJ_TYPE(値を持つ選択パラメータタイプ:appsvc
Param2(あるタイプのもの)
Param3(カスケードタイプのもの、つまり、親パラメーターPROJ_TYPEの値に依存).
Param4(PROJ_TYPEが「アプリ」として選択されている場合にのみ、このパラメーターを表示したいとします)
Param5(あるタイプのもの)
Param6(PROJ_TYPEが「svc」として選択されている場合にのみ、このパラメータを表示したいとします。このパラメータはどのタイプでもかまいませんつまり、選択、動的、拡張選択など)

Jenkinsジョブに上記のパラメーターがある場合、ユーザーがビルドしようとするとJenkinsジョブがすべてのパラメーターを表示/プロンプトします(つまり、Build with Parameters)。

Jenkinsで、PROJ_TYPEパラメータがappとして選択されている場合にのみパラメータ(Param4)を表示することはできますか?それ以外の場合、このパラメータをまったく表示したくありません。 つまりこの場合、ジョブにはPROJ_TYPE、Param2、Param3、Param4、およびParam5のみが表示されます(そしてParam6は表示されないか、無効/グレー表示されます)。

同様に、PROJ_TYPEパラメーターがsvcとして選択されている場合にのみパラメーター(Param6)を表示したいのですが、それ以外の場合は、このパラメーターをまったく表示したくありません。 つまりこの場合、ジョブはPROJ_TYPE、Param2、Param3、Param5、およびParam6のみを表示します(およびParam4は表示されないか、無効/グレー表示されます)。

14
Arun Sangal

私はこれが古いものであることを知っていますが、私は Active Choices Plugin が見つかるまで同じようなものを探していました。パラメーターは非表示になりませんが、(Active Choicesパラメーターで直接またはScriptlerで)Groovyスクリプトを記述して、異なる値を返すことができます。例えば:

グルーヴィー
if(MY_PARAM.equals( "Foo")){return ['NOT APPLICABLE']}

else if(MY_PARAM.equals( "Bar")){return ['これが唯一の選択肢です]]}

else if(MY_PARAM.equals( "Baz")){return ['Bazoo'、 'Bazar'、 'Bazinga']}

/グルーヴィー

この例では、MY_PARAMはJenkinsジョブのパラメーターです。 Active Choicesの「Referenced Parameters」フィールドに「MY_PARAM」を入力する限り、スクリプトはパラメーターが変更されるたびにパラメーターを再評価し、一致する戻り値(または値のリスト)を表示します。

このように、以前の選択に応じて異なる選択肢のリスト(1つまたはゼロの選択肢のリストを含む)を返すことができますが、パラメーターページにパラメーターが表示されないようにする方法が見つかりませんでした。複数のアクティブチョイスパラメーターが同じパラメーターを参照する可能性があるため、誰かが「App」または「Svc」を選択すると、すべての無関係なパラメーターが「該当なし」またはあなたに合ったものに切り替わります。 HTMLテキストの色もいくつか試してみましたが、共有できるサンプルコードはありません。

ダーク

7
Dirk Koenig

説明によると、これを Dynamic-Jenkins-Parameterプラグイン で行うことができます:

2つの選択要素を可能にするJenkinsパラメータプラグイン。 2番目の選択は、最初の選択に対して行われた選択に応じて値を設定します。

Wikiで提供されている例は、必要なことを正確に実行します(少なくとも1つの条件付きの場合)。一人でやってみませんでした。

3

@derikうまくいきました!私にとって、2番目のリストは、最初の要素の選択に基づいて生成されます。

私はアクティブチョイスのリアクティブパラメータープラグインを使用しました。最初のパラメーターは最初の選択に基づいてサーバーを一覧表示し、2番目のパラメーターは選択したサーバーに接続してバックアップを一覧表示することです。利用可能なバックアップのリストがここに表示され、復元されます。

  1. パラメータ化が有効です。
  2. 選択の選択パラメータ名:サーバーの選択:選択.. qaステージングマスター説明:リストからサーバーを選択します
  3. 新しいパラメーター「Active Choice Reactive Parameter」を追加します。名前:バックアップスクリプト:Groovyスクリプトdef getbackupsqa =( "sshpass -f /opt/installer/pass.txt/usr/bin/ssh -p 22 -o StrictHostKeyChecking = no [email protected]。 33.44 ls/opt/jenkins/backup ")。execute()

if(Server.equals( "Choose ..")){return ['Choose ..']} else if(Server.equals( "qa")){return getbackupsqa.text.readLines()} else if(Server。 equals( "staging")){return ['ステージングサーバーはまだ構成されていません']} else if(Server.equals( "master")){return ['マスターサーバーはまだ構成されていません]]}

説明:リストからバックアップを選択します参照パラメーター:サーバー

ここの結果

1
Anand Babu