Bitbucket サーバーにプッシュされたコードを Jenkins でビルドする

無意味にハマった。

Jenkins 側の設定

とりあえず Pipeline を使っているものとする。「ビルドのパラメータ化」にチェックを入れておくと、外部からのパラメータを受け取れるようになる。

f:id:kenkoooo:20170608161433p:plain

例えばパラメータ "branch" を定義していると、Pipeline Script の Groovy は変数 branch の中に値が入った状態で起動する。

Bitbucket Server 側の設定

うちの会社では Bitbucket Server を使っている。

HTTP-Request Hook for Bitbucket Server | Atlassian Marketplace

とりあえずこのプラグインを入れる。

HTTP-Request Hook for Bitbucket Server の設定

Method

POST にする。後述するように Post Data が空であるにも関わらずだ。

URL
JENKINS_URL/job/JOB_NAME/buildWithParameters?PARAMETER_NAME=PARAMETER_VALUE

の形式で書く。

例えば、プッシュされたブランチの名前が知りたければ、以下のように書く。

JENKINS_URL/job/JOB_NAME/buildWithParameters?branch=${refChange.refId}
Username / Password

Jenkins のユーザーネームと API トークンをそれぞれ書く。

Post Data

空のままで良い。