2

いくつかの Jenkins Jobs の動的ビルド パラメータを確立しようとしています。私はすでにDynamic Parameter Plug-inExtensible Choice Parameter pluginを見つけました。どちらも、入力に groovy スクリプトを使用できます。

ここで、トリッキーな部分が来ます。project.property ファイル (現在のバージョン) を読み取り、それを入力のデフォルトとして使用したいと考えています。問題は、ワークスペース内のファイルにアクセスすることでした。「Extensible Choice Parameter」プラグインのみに、ワークスペースの FilePath を取得できる現在のプロジェクト (AbstractProject) の便利な変数を有効にするオプションがありました。次のスクリプトを参照してください。

import hudson.FilePath;

propertiesFile = new FilePath(project.getWorkspace(),"project.properties");
props = new Properties();
props.load(propertiesFile.read());
return [props["version"]]

現在、このプラグインはユーザーにリストを提供するだけで (編集可能にできますが)、主な欠点は、このスクリプトをコピーして、使用するすべてのジョブに貼り付ける必要があることです (これらすべての何かを変更することは言うまでもありません)仕事も苦痛になります)。

動的パラメーター プラグインには優れたスクリプトラー統合がありますが、現在のプロジェクトを取得する方法がわかりません。この例では、実際のワークスペースからパラメーターをロードするものは何も示していませんが、外部ファイルからのみロードしています。

これらの問題のいずれかを解決する方法を知っている人はいますか?

4

1 に答える 1

3

Extensible または Extended Parameters の代わりにDynamic Parameter Plug-inを使用すると、次のいずれかの Groovy スクリプトを実行できることがわかりました。

  • マスター上、または
  • ジョブが実行されるスレーブ (スレーブが起動している場合)。

この選択は、リモート スクリプトチェックボックスで行われます。プラグインのドキュメントから: 「[リモート スクリプト] チェックボックスがオンの場合、ビルドが開始されたスレーブでスクリプトが実行されます。」

たとえば、ワークスペース内のファイルを正常に一覧表示し、次のスクリプトを使用してそれらのパラメーター メニューを作成しました (これmytestは私のジョブ名です)。

def dir = "ls -1 workspace/mytest".execute().text
return dir.readLines()

注: コンマで区切られた csv テキストを期待する他のパラメータ プラグイン (拡張パラメータ プラグイン) とは対照的に、これは groovy リスト オブジェクトを期待するため、readLines().

于 2015-04-16T15:45:18.423 に答える