LoginSignup
57
60

More than 3 years have passed since last update.

GitHubとJenkinsのWebhook連携

Last updated at Posted at 2018-06-10

はじめに

GitHubとJenkinsのWebhook連携に関する手順を記述します

前提事項

  • GithubのWebhookを使用します(Git Pluginは未使用です)
  • Jenkinsはver. 2.150.2になります

GitHubとJenkinsのWebhook連携

Webhookとはアプリケーションから別のアプリケーションに対してリアルタイムの情報提供を実現するための仕組みを指します

Webhookを使用することで以下のような処理が実現できます
1. GitHubにpush/Pull Request等が行われた場合、Jenkinsにリクエストを発行する
2. リクエストを受け取りJenkinsのジョブを起動する

処理イメージ

GitHubとJenkinsの設定

APIトークン取得

Jenkinsで「Jenkinsの管理>ユーザーの管理>設定>APIトークン」を行い、認証に使用するAPIトークンを取得します
api-token

GitHubのwebhook作成

GitHubで「Settings>Webhooks>Add Webhook」を行いWebhookを設定します
webhooks

項目 内容
Payload URL Payload URLを入力します
Content type application/x-www-form-urlencodedを選択します
Secret 空白(GitHub Pluginを使用する場合は適宜設定します)
Which events would you like to trigger this webhook? デフォルトは「Just the push event. (プッシュされた時)」です。用途に応じて適宜設定します

Payload URL入力

入力形式は以下になります
http://[JENKINS_USERID]:[API_TOKEN]@[JENKINS_HOST]/job/[JOB_NAME]/buildWithParameters?token=[TOKEN_NAME]
例)http://jenkins_user:xxxxxxx@example.com/myjenkins/job/myjob/buildWithParameters?token=xxxxx

項目 内容
JENKINS_USERID JenkinsのユーザIDを入力します
API_TOKEN APIトークンを入力します
JENKINS_HOST Jenkinsのホスト名を入力します
JOB_NAME Jenkinsで起動するジョブを入力します
TOKEN_NAME トークンです。英数字記号を組み合わせて適宜作成します

Jenkinsのジョブ設定

Jenkinsでジョブを作成して各種設定を行います

General

General

項目 内容
ビルドのパラメータ化 パラメータの追加(文字列)を行います
名前に「payload」を入力します
古いビルドの廃棄 ビルドの保存日数やビルドの保存最大数を適宜設定します

ソースコード管理

ソースコード管理

Git

ビルド等を行うリポジトリ情報を入力します

項目 内容
リポジトリURL リポジトリURLを入力します
ビルドするブランチ ビルド対象のブランチを入力します(未入力時はすべてのブランチが対象になります)

ビルド

ビルド

Conditinal Step(Single)

指定したブランチのイベントのみにシェルスクリプトを実行する場合はConditinal Step(Single)を追加します

項目 内容
Run? Regular Expression Matchを選択します
Expression Expressionを指定します
Label ${ENV,var="payload"}を入力します
On evaluation failure Don't runを選択するとExpressionに合致するリクエストのみシェルスクリプトを実行します
Builder シェルの実行を選択するとシェルスクリプトを実行できます
シェルスクリプト ジョブ起動時に実行するスクリプトを記述します
Expression指定方法

GitHubのwebhookを作成するとGitHubにpush/Pull Request等の操作が行われた場合にJenkinsにリクエストが発行されます。
リクエスト

ExpressionにはトリガーとなるPayload内の文字列を入力します。

説明
.*"ref":"refs\/heads\/develop".* developが操作された場合にシェルスクリプトを実行する
.*"ref":"refs\/heads\/feature*.* すべてのfeatureで操作された場合にシェルスクリプトを実行する

参考情報

57
60
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
57
60