状況
gitlabのリポジトリにコミットされたらテストを実行して欲しいが、その前に別のリポジトリにあるソースをチェックアウトして準備する必要がある(モックを返すプロセスを起動しないといけない・・・)
ちゃんとプッシュされたブランチに対してテストして欲しい
結論
jenkinsのgitlab pluginではなく、git pluginを使い、pushされたブランチ名を取得する
Parameterized Trigger Pluginを使って、ビルドに変数を渡せるようにする
hookを受け、ブランチ名を下流プロジェクトに流すジョブを作成する(間に別のリポジトリに対するジョブが挟まるため)
仕事を振り分けるジョブを作成する
webhook
ソースコード管理→gitに対象のリポジトリを設定し、ビルド・トリガを"SCMをポーリングする"に設定して、
http://{gitlabサーバーのアドレス}/git/notifyCommit?url={ブランチの情報}
を設定すれば、push時にジョブが起動するようになる。
ブランチ名を取得する
こいつにこういう記述がある
Environment variables
The git plugin sets several environment variables you can use in your scripts:
GIT_COMMIT - SHA of the current
GIT_BRANCH - Name of the branch currently being used, e.g. "master" or "origin/foo"
GIT_PREVIOUS_COMMIT - SHA of the previous built commit from the same branch (the current SHA on first build in branch)
GIT_URL - Repository remote URL
GIT_URL_N - Repository remote URLs when there are more than 1 remotes, e.g. GIT_URL_1, GIT_URL_2
GIT_AUTHOR_EMAIL - Committer/Author Email
GIT_COMMITTER_EMAIL - Committer/Author Email
上記方法で起動されたジョブは環境変数$GIT_BRANCHにブランチ名がアサインされるので、これを下流プロジェクトに引き渡すようにすれば良い。
下流プロジェクトにブランチ名を流す
ビルド後の処理→Trigger parametrized build on other projects→Predefined parameters
branch = ${GIT_BRANCH}
下流プロジェクトのパラメータにbranchが渡される。(下流プロジェクトはパラメータ付きでビルドできるように設定する)
下流プロジェクト
ビルドのパラメータ化にチェックをつけ、文字列を選択。
名前に先ほどの場合はbranchを指定し、パラメータを使用したいところで$branchとすれば呼べる。