ビルドのパラメータでリビジョン番号を持ちまわることによって実現できる。
背景
プロジェクト foobar を Linux と Windows でビルドして、両方成功したら公開リポジトリに push する、みたいなことをする。この時、 Jenkins のプロジェクト構成はこんな感じになるはず。
- foobar-polling : プライベートリポジトリをポーリング
- foobar-linux : Linux でビルド。 foobar-polling の下流プロジェクト
- foobar-windows : Windows でビルド foobar-polling の下流プロジェクト
- foobar-push : 公開リポジトリに push する。 foobar-polling に Join Trigger を登録する
これをナイーブに設定するとうまくない。たとえば、ジョブチェーンが完了する前に、新しいリビジョンがプライベートリポジトリに push される可能性がある。この場合、各プロジェクトが別のリビジョンをチェックアウトして、結果として未テストのリビジョンが公開されてしまう。
foobar-polling の設定
チェックアウトしたリビジョンを UPSTREAM_MERCURIAL_REVISION パラメータで下流に受け渡すため、ビルド手順の中でプロパティファイルを作る。
- 「ビルド」→「ビルド手順の追加」で「シェルの実行」を選択
- 次のシェルスクリプトを入力
echo "UPSTREAM_MERCURIAL_REVISION=$MERCURIAL_REVISION" \ >jenkins-build.properties
MERCURIAL_REVISION は Mercurial プラグインが設定する環境変数。現在のビルドのリビジョンが代入されているので、これを下流に受け渡す。
foobar-linux, foobar-window をパラメータ付きで発砲する。
- 「ビルド後の処理」→「ビルド後の処理の追加」で「Trigger parameterized build on other projects」を選択
- 「Projects to build」に「foobar-linux, foobar-windows」を入力
- 「Add Parameters」で「Parameters from properties file」を選択
- 「Use properties from file」に「jenkins-build.properties」を入力
foobar-push を Join Trigger を使ってパラメータ付きで発砲する。
- 「ビルド後の処理」→「ビルド後の処理の追加」で「Join Trigger」を選択
- 「Run post-build actions at join」をチェック
- 「Trigger parameterized build on other projects」をチェック
- 「Add Parameters」で「Parameters from properties file」を選択
- 「Projects to build」に「foobar-push」を入力
- 「Add Parameters」で「Parameters from properties file」を選択
- 「Use properties from file」に「jenkins-build.properties」を入力