GitBucket
GitBucket はご存知、takezoe さんを中心に開発されている素晴らしい GitHub クローンです。度重なるバージョンアップにより様々な機能が追加され、その利便性は計り知れません。
そんな GitBucket の機能の中に Webhook 機能があります。「Webhook って何ぞや」という話は別途調べてほしいのですが、語弊を承知で言うならば、「ユーザの行動をトリガにして特定のURLにアクセスする機能」です。
例えば、GitBucket にコミットしたことをトリガにして、Slack で発言する(Web API 経由)、などということができるわけです。
Jenkins でのビルド
そこで GitBucket での Webhook を用いて Jenkins でビルドをしてみたいと思います。GitBucket や Jenkins のインストールについてはここでは詳しくは説明しません。
Jenkins の設定(「ソースコード管理」)
Jenkinsのトップから、「任意のプロジェクト」→「設定」とたどります。そうしたら「ソースコード管理」の項目にいきましょう。
選択肢の中で「Git」を選び、「Repository URL」に GitBucket のリポジトリの URL を入れます。認証とか対象ブランチとかの設定もありますが、そこらへんはうまくやってください。
Jenkins の設定(「ビルド・トリガ」)
次に Jenkins の設定画面を下に進めると「ビルド・トリガ」という項目があります。
そこの「リモートからビルド」にチェックを入れます。そうすると「認証トークン」を入力する欄が出てきますので、そこに任意の文字列を入れます。パスワードみたいなものですね。ここでは「認証トークン」を仮に「abcdefghijklmnopqrstuvwxyz」とします。
ここまでできたら設定を保存しましょう。
GitBucket の設定(「Service Hooks」)
GitBucket の設定をしましょう。トリガにしたいリポジトリを選択し、「Settings」メニューから「Service Hooks」タブをたどります。
「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
などでも上記の方法にならえば同じことが実現できます。