LoginSignup
25
26

More than 5 years have passed since last update.

gitlabのwebhookからブランチの情報を受け取り、Jenkinsに仕事をさせる

Posted at

状況

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とすれば呼べる。

25
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
26