手動実行したいケースについて:
まだまだお世話になっているJenkinsさんですが、わたしはあまり『継続的』(コミットのたび)にビルドするという作業はしたことがなく、どちらかというと以下のような作業を行なっていました。
- 作業日程を決めて、作業用チケットを作成する(Redmineです)
- 指定のブランチのビルド(リリース)を手動実行する
- ビルド結果をチケットに添える
という作業を行なっていました。
※ Jenkinsの各ジョブの結果と実行ログのリンクをRedmine側のチケットに追記するために こんなJenkins用プラグイン を作ったりしてました。
この作業の時は、常時masterブランチを対象としていました。
みなさんはいかがでしょうか。やはり少数派なんでしょうかね...。
ブランチやタグではなく、CommitID指定でビルドしたい!
さて、なんだかんだで、CIしちゃっていい環境と、一定のタイミングで指定のコミットを適用したい環境があります。(開発環境はガンガンCIするけど、チーム外のユーザに評価してもらう環境はある程度落ち着いたものを提供したいとか)
このへんは、ブランチにpush/margeしたタイミングとか、タグを付けたタイミングで実行するようにすればいいのですが、『そういえば、コミットID指定でビルドするのって、どうやればいいかな...』と、ふと思いました。
(やったこと無かったのです)
で、ちょっと試してみると、こんな感じで設定できました...
ブランチの代わりにパラメータを入れる
JenkinsのGitプラグインには、『ビルドするブランチ入れてねー』と書いてありますし、例もブランチの設定しか出ていませんが コミットID(Gitのハッシュ)も指定可能です....。
コミットIDは実行時に切り替えたいので、$COMMIT_ID というビルドパラメータを指定するようにしました。
ビルドパラメータを指定する
パラメータの指定方法が良く判らないとか、指定無しならデフォルトでdevelopブランチなど特定のブランチを取り出すようにしたいのであれば、このように設定しておきます。
以下は、指定無しなら develop ブランチを使う設定です。
あとは、実行時にCommitIDを入力してあげれば、希望通りに動いてくれます。
その他の工夫
たぶん周回遅れかもしれませんが、フロント側の場合は、いつのCommitIDのものが環境に適用されているか、ぱっと見分かりやすいように、画面のフッターの部分(HTMLもしくはHTMLのテンプレート)に、CommitIDとビルドIDを差し込むようにしています。
ここはJenkinsのステップの中で、シェルを使って置換しています....
こんな感じ。
# ビルドID差し込んでねーというパラメータがあったら
if $INJECT_BUILD_INFO = true ; then
# 書き換えたいテンプレートのフォルダに移動 (exp. template)
cd template
export GIT_NUMBER=${GIT_COMMIT:0:8} # 環境変数にCommit IDを入れる (長いので8桁にする)
perl -i -pe 's/置換する直前の文字/置換する直前の文字 \/ BUILD_ID: $ENV{BUILD_NUMBER} (Commit:$ENV{GIT_NUMBER})/' 差し替えたいファイル
fi
以上、ほんとうに小さなことですが、メモとしてアップしてみました。
「そんなことしなくても、こうすれば出来るよ!」というご指摘、ご意見もいただければ幸いです!
みなさんの毎日が、God JOBでありますように〜!