【Jenkins】Webhookを設定してみる
はじめに
GitHub→JenkinsのWebhook連携を試してみたので、
手順メモ書きます。
Webhookとは?
JenkinsのGit連携の機能の一つです。
GitHub側にJenkinsのURLを登録して、
GitHub上で、プルリクやプッシュなどのアクションがあった時に、
登録したJenkinsのURLにPOSTリクエストを投げてくれる機能です。
JenkinsのGit連携の機能としては、
もうひとつ、SCMポーリングがあります。
こちらは、方向が逆で、
Jenkinsから指定したGitに対して定期的に問い合わせを行う機能です。
Jenkins側の準備
APIトークンの準備
GitHubからJenkinsへHTTPリクエストを送るための、
APIトークンの準備をします。
[Jenkinsの管理]-[ユーザの管理]から、
任意のユーザを選択し、
[設定]を押下して、
APIトークンの[Add new Token]を押下、
[Generate]でAPIトークンを生成します。
この時出てくる文字列は忘れずにコピーします。
ジョブの設定
GitHubと連携するジョブを作成し、以下の設定をします。
[ビルドのパラメータ化]にチェックをつけ、
文字列パラメータを追加し、「payload」と設定します。
[ソースコードの管理]に連携するGitを登録します。
- リポジトリURL
- 認証情報
- ビルドするブランチ
ビルドトリガの「リモートからビルド」を選択し、
認証トークンに先ほど生成したトークンの名前を入力
これで、Jeknins側のGitHubのHTTPリクエストの窓口が整います。
GitHubの設定
GitHubのリポジトリのページの[Setting]から、[Webhook]を選択します。
[Add webhook]を押下して、以下の情報を入力します。
- Payload URL:http://<ユーザ名>:<トークン>@
/job/<ジョブ名>/buildWithParameters?token=<トークン名> - Content type:type:application/x-www-form-urlencoded
- Which events would you like to trigger this webhook?:Just the push event
- Active:チェックオン
入力したら、[Add Webhook]ボタンを押下します。
ここまでできれば、
試しにGitHubに対してPushとかしてみれば、
連動してJenkinsジョブのビルドが動いてくれるのが確認できます。
まとめ
GitHubへのアクションをJenkinsジョブのビルドのトリガとする場合の手順でした。
Webhookにしても、SCMポーリングにしても、
JenkinsをCI/CDツールとして活用するためには、有用な機能だと思います。
実機で調べてたの1か月以上前の話でしたが、(汗)
自分のVPSに環境が残ってました。奇跡!