JenkinsのPatch Parameter Pluginを使ってみる

JenkinsのPatch Parameter Pluginの使い方をまとめました。

Debian 8で実行しています。


1 Patch Parameter Pluginとは

ジョブの実行時にビルドパラメータとしてソースコードへのパッチを取り込むことができるプラグインです。テストをしたパッチのみをリポジトリに取り込みたい場合に有用です。

ビルドパラメータでパッチファイルを指定して、シェルの実行でpatchコマンドを実行した場合と動作は同様になると思います。しかし何度も同じパッチでジョブを実行した場合に、パッチが重複して適用されてしまいます。Patch Parameter Pluginはそのあたりをケアしてくれるようです。

2 combinediffコマンド

patchutilsパッケージに複数のパッチをひとつのパッチにするcombinediffコマンドが含まれています。Patch Parameter Pluginはひとつのパッチのみを取り込むので、複数のパッチがある場合はcombinediffコマンドでひとつにしてから取り込むと良いでしょう。

$ combinediff [Patch1] [Patch2] ...
$ cat 0001.patch
--- a.c.org     2015-07-09 09:48:03.000000000 +0900
+++ a.c 2015-07-09 09:48:13.000000000 +0900
@@ -1,6 +1,6 @@
 #include <stdio.h>

-int main()
+int main(int argc, char *argv[])
 {
   return 0;
 }
$ cat 0002.patch
--- a.c.org     2015-07-09 09:48:37.000000000 +0900
+++ a.c 2015-07-09 09:53:47.000000000 +0900
@@ -1,6 +1,6 @@
 #include <stdio.h>

-int main(int argc, char *argv[])
+int main(int argc, char **argv)
 {
   return 0;
 }
$ combinediff 0001.patch 0002.patch
diff -u a.c a.c
--- a.c 2015-07-09 09:48:13.000000000 +0900
+++ a.c 2015-07-09 09:53:47.000000000 +0900
@@ -1,6 +1,6 @@
 #include <stdio.h>

-int main()
+int main(int argc, char **argv)
 {
   return 0;
 }

3 Patch Parameter Pluginのインストール

Jenkinsのプラグイン制御画面からインストールします。

Jenkinsの管理 -> プラグインの管理 -> 利用可能

0001_PatchParameter-install.png

4 ジョブの設定

ビルドのパラメータ化にチェックを入れ、「Patch file as parameter」を選択します。

0002_Job-setting.png

5 ウェブページからジョブの実行

パラメータ付きビルドにて、パッチファイルをアップロードします。パッチファイルは「patch.diff」というパラメータで扱われます。

0003_Job-running.png

コンソール出力にログが出力されます。

Applying a patch

6 Jenkins CLIからジョブの実行

Jenkins CLIからビルドパラメータ「patch.diff」を指定してジョブをビルドします。

java -jar jenkins-cli.jar -s [JenkinsサーバのURL] \
   build [ジョブの名前] -p patch.diff=[パッチファイル]

SSH認証でJenkins CLIを使う方法はこちらを参照してください。