LoginSignup
0
2

More than 5 years have passed since last update.

Gitリポジトリ内ディレクトリをJenkins Jobのパラメタで選択したい

Last updated at Posted at 2018-03-06

これは何

Gitリポジトリ内のディレクトリをJenkins Jobのパラメタで選択したい場面に遭遇したときのメモです。
Jenkins1の設定について記述しています。

スクリーンショット 2018-03-06 19.12.40.png

前提条件

プラグイン 拡張可能な選択 Extensible Choice Parameter
がインストールされていること。

Extensible Choice Parameter Plugin の File Choice Parameter で実現できそうだけど。。

Extensible Choice Parameter Plugin で選択できる File Choice Parameter は、システム上のファイルやディレクトリを選択肢として設定できます。
しかし、今回の環境では使えませんでした。
理由は、利用しているJenkins環境がJob管理サーバとJob実働サーバで分かれており、Jobを実行すると適宜空いているJob実働サーバに割り振られるため、Job管理サーバにcloneしたリポジトリは保持できませんでした。
今回はGroovyスクリプトで生成する選択肢 System Groovy Script Choice Parameterを利用します。

あらすじ

2つのJenkinsJobを作成します。
- Job1: Gitリポジトリを取得してディレクトリの内容をファイルに吐き出すジョブ。
- Job2: 最終的に動かしたいジョブ。Job1が吐き出したファイルを読み込み、パラメタにプルダウンメニューを表示する。

Job1の設定

  • ソースコード管理でGitを選択。取得するリポジトリを設定。
  • ビルド > ビルド手順の追加 でworkspaceからlsの出力結果をリダイレクトするシェルを追加
# 選択肢として表示したいディレクトリのパスを指定します
TARGET_PATH=${WORKSPACE}/target_directory

# ディレクトリ名にCHOICEを含むものを出力します。
echo 'ls -a ${TARGET_PATH} | grep ".*CHOICH.*"'
ls -a ${TARGET_PATH} | grep ".*CHOICH.*" > target.log

echo "cat target.log"
cat target.log
  • ビルド後の処理 > ビルド後の処理の追加Copy files back to the job's workspace on the master node を選択して target.log を指定。
  • ビルドトリガ定期的に実行 もしくは SCMポーリング を設定。

Job2の設定

  • 拡張可能な選択 > 選択肢の取得方法Groovyスクリプトで生成する選択肢 を指定。
  • Groovyスクリプトに下記を設定。[PATH_TO_WORKSPACE]の箇所は、Job1実行時のコンソール出力に [copy-to-slave] として出力された内容を設定してください。
def files = new File("/[PATH_TO_WORKSPACE]/target.log").readLines()
return files

以上でJob2のパラメタに選択肢として設定できるはず。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2