JenkinsでGitブランチの自動ビルドを行うMulti-Branch Project Pluginのパッチ書いた
JenkinsでGitブランチを自動追従してビルドさせるには、上記の記事で紹介されているMulti-Branch Project Pluginが便利なんだけど、不満点がいくつかあるのでパッチを書いてみた。
パッチ内容
ブランチ削除時に対応するジョブを問答無用で削除されないようにオプション化
Multi-Branch Project PluginはGitでブランチを作成すると自動的に専用のジョブを作成してくれるのだが、ブランチ削除時にはそのジョブは即削除される仕様になっている。ビルド履歴や成果物も消えてしまい運用によっては困る場合があるので、削除のかわりにジョブの無効化を行うオプションを追加した。
※Bambooみたいにブランチ削除から一定時間後に自動削除、というオプションもあると良いかも? 今後要望あれば追加するかも。
PRはこちら。作者ではない方がレビューしてくれてOKもらえているものの、作者からの反応はなし。というかPR出した後にすぐにこちらの考慮不足を作者が指摘してくれたのだが、対応版をpushするとなぜかその指摘コメントが削除されていた。どういうこっちゃ。github.com
新規ブランチ発見時にジョブを実行しないようにオプション化
Multi-Branch Project PluginはGitでブランチを作成すると自動的に専用のジョブを作成し、その際に必ず作成したジョブを実行する仕様になっている。Issue-37で要望が挙がっているようにこの挙動をオプション化した。
PRはこちら。コメントはなしで放置されてる。github.com
Gitリポジトリ設定でShallow Cloneなどの詳細な設定を可能に
Multi-Branch Project PluginはSCM API経由でGitリポジトリ設定を行うようになっている(なのでGit以外のSCMにも対応している)。しかしSCM API経由だとGitリポジトリの場合、Shallow Cloneなどの詳細な設定が残念ながらできない。これはIssue-82で要望が挙がっているのだが、SCM APIの実装側、つまりGit SCM plugin側で実装が必要になる。
工夫すればMulti-Branch Project Plugin側で対応することもできるので、駄目元でPRを送ってみたところやっぱ即リジェクトされた。
という訳でGit SCM plugin側に今度はPRを送ってみた。こちらはLGTMのコメントが頂けてマージしてもらえそうな感じ??github.com
カスタムビルド
Multi-Branch Project Pluginは作者が忙しいのか反応が無いのいで、当面Forkプロジェクトでカスタムビルドを行うことにした。あと、Git SCM pluginもマージされるまで用意。Drone.ioを使ってビルドしています(Jenkins Pluginなのに)。
- Multi-Branch Project Plugin
- Git SCM plugin
初めてDrone.io使ってみたけどシンプルで良い。