GitBucket の Webhook(Service Hooks、Payload URL)を Jenkins のビルド・トリガにする方法

GitBucket

GitBucket はご存知、takezoe さんを中心に開発されている素晴らしい GitHub クローンです。度重なるバージョンアップにより様々な機能が追加され、その利便性は計り知れません。

そんな GitBucket の機能の中に Webhook 機能があります。「Webhook って何ぞや」という話は別途調べてほしいのですが、語弊を承知で言うならば、「ユーザの行動をトリガにして特定のURLにアクセスする機能」です。

例えば、GitBucket にコミットしたことをトリガにして、Slack で発言する(Web API 経由)、などということができるわけです。

Jenkins でのビルド

そこで GitBucket での Webhook を用いて Jenkins でビルドをしてみたいと思います。GitBucket や Jenkins のインストールについてはここでは詳しくは説明しません。

Jenkins の設定(「ソースコード管理」)

Jenkinsのトップから、「任意のプロジェクト」→「設定」とたどります。そうしたら「ソースコード管理」の項目にいきましょう。

f:id:gregminster:20161030233041p:plain

選択肢の中で「Git」を選び、「Repository URL」に GitBucket のリポジトリの URL を入れます。認証とか対象ブランチとかの設定もありますが、そこらへんはうまくやってください。

Jenkins の設定(「ビルド・トリガ」)

次に Jenkins の設定画面を下に進めると「ビルド・トリガ」という項目があります。

f:id:gregminster:20161030233310p:plain

そこの「リモートからビルド」にチェックを入れます。そうすると「認証トークン」を入力する欄が出てきますので、そこに任意の文字列を入れます。パスワードみたいなものですね。ここでは「認証トークン」を仮に「abcdefghijklmnopqrstuvwxyz」とします。

ここまでできたら設定を保存しましょう。

GitBucket の設定(「Service Hooks」)

GitBucket の設定をしましょう。トリガにしたいリポジトリを選択し、「Settings」メニューから「Service Hooks」タブをたどります。

f:id:gregminster:20161030233654p:plain

「Payload URL」の欄に、先程の「認証トークン」を含んだ URL を入力しましょう。「認証トークン」が「abcdefghijklmnopqrstuvwxyz」の場合は、URL は以下のようになります。

http://jenkins-url/job/jenkins-project-name/build?token=abcdefghijklmnopqrstuvwxyz

「jenkins-url」には Jenkins を設置してあるアドレス(ドメイン)、「jenkins-project-name」にはビルドの対象としたい Jenkins のプロジェクト名を入れてください。

「Test Hook」ボタンを押して、「Response」に「201」が返ってくれば成功です。

GitBucket の設定(「Which events would you like to trigger this webhook?」)

「Payload URL」より下の項目については、「Content type」と「Security Token」はデフォルトのままでいいです。「Which events would you like to trigger this webhook?」が要はトリガとなるアクションなわけですが、Jenkins のビルドだとすると「Push」にチェックを入れておけばすぐに試せる感じでしょうか。ここらへんは各自で調整してみてください。

Jenkins でのビルドアクション

これで GitBucket をトリガにして Jenkins のビルドを発動させることができました。どのようなビルドアクションを行うかは Jenkins 側で改めて設定してみてください。自動デプロイなどを組み込むと良さそうですね。

もちろんですが

GitBucketに限った話ではなく、GitLabなどでも上記の方法にならえば同じことが実現できます。

Powered by はてなブログ