コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Jenkins】GitHub のプルリクをトリガーにジョブをビルドする方法

目次

検証環境

  • Windows 10
  • Jenkins 2.277.4
  • GitHub Pull Request Builder 1.42.2

GitHub Pull Request Builder プラグインのインストール

f:id:baba_s:20210510174659p:plain

Jenkins のプラグインマネージャーを開いて
「GitHub Pull Request Builder」をインストールします

GitHub Pull Request Builder プラグインの設定

Jenkins の「Jenkinsの管理 > システムの設定」を開いて

f:id:baba_s:20210510165552p:plain

「Credentials」に使用する GitHub アカウントの情報を設定します
今回は Bot ではなく自分の GitHub アカウントを使用する方法で進めます

f:id:baba_s:20210510165558p:plain

アカウント情報が正しく設定できているかどうか確認したい場合は
「Test Credentials...」を押して

f:id:baba_s:20210510165604p:plain

以下の手順を行います

  1. 「Test basic connection to GitHub」をオンにして「Connect to API」を押します
    • Connected to https://api.github.com as XXXX login: YYYY と表示されれば
      正常に Jenkins から GitHub に接続できています
  2. 「Repository owner/name」の蘭に 【アカウント名】/【リポジトリ名】 を入力します
    • リポジトリの URL ではなく 【アカウント名】/【リポジトリ名】 を入力します
  3. 「Test Permissions to a Repository」をオンにして「Check repo permissions」を押します
    • Use has access to: XXXX と表示されれば正常にリポジトリに接続できています
  4. 「Test adding comment to Pull Request」をオンにして
    「Issue ID」に適当な Issue の ID を入力して
    「Comment to post」に適当な文字列を入力して「Comment to issue」を押します
    • 指定した Issue に入力した文字列がコメントされれば正常に Issue に接続できています

f:id:baba_s:20210510170526p:plain

アカウント情報が正しく設定できたら「保存」を押します

ジョブの設定

ジョブの設定画面を開いて

f:id:baba_s:20210510172241p:plain

「GitHub project」をオンにして「Project url」を入力します
https://github.com/baba-s/hogehoge.git という形式ではなく
https://github.com/baba-s/hogehoge という形式で入力します

f:id:baba_s:20210510171240p:plain

「ソースコード管理」の欄で「Git」をオンにして
「リポジトリ URL」を入力して、そのリポジトリにアクセスするための
GitHub アカウントの情報を「認証情報」の欄で設定します

そして「高度な設定」を押して
「Refspec」に +refs/pull/*:refs/remotes/origin/pr/* と入力して
「ブランチ指定子」に ${sha1} と入力します

f:id:baba_s:20210510171459p:plain

「ビルド・トリガ」の欄で「GitHub Pull Request Builder」をオンにして
「GitHub API credentials」にデフォルトの設定が反映されていることを確認したら
「高度な設定...」を押します

f:id:baba_s:20210510171738p:plain

「Crontab line」にプルリクが存在するかどうかを確認する頻度を指定します
0-59 * * * * なら毎分確認します

f:id:baba_s:20210510171742p:plain

「Build every pull request automatically without asking (Dangerous!).」をオンにします
これをオンにすると、誰がプルリクした場合でもジョブをビルドするようになります
特定のユーザや特定の Organization に所属しているユーザがプルリクした場合のみ
ジョブをビルドしたい場合は「White list」や「List of organizations」の欄を使用します

f:id:baba_s:20210510171752p:plain

「Whitelist Target Branches:」に、どのブランチへマージする
プルリクが出された場合にビルドするか入力します
master と入力したら master ブランチにマージするプルリクが出されたら
ジョブをビルドするようになります

動作確認

ここまでの設定が完了したらプルリクを出してみます
プルリクを出してから「Crontab line」に指定した時間になったら
自動でジョブのビルドが開始します

その他

すでに存在するプルリクでジョブをビルドし直す

プルリクに test this please とコメントする

ジョブのビルド結果によってプルリクのチェックを変える

特に何も設定しなくても、ジョブのビルド結果によって
プルリクのチェックの成功・失敗は変化します

ジョブのビルドが成功した場合

f:id:baba_s:20210510173241p:plain

「All checks have passed」になります

ジョブのビルドが失敗した場合

f:id:baba_s:20210510173332p:plain

「All checks have failed」になります
「Details」を押すとジョブのビルド結果のページを開けます

ジョブの設定がうまくいかない

「Jenkinsの管理 > システムログ > すべてのログ」を押して
Jenkins のログを確認します

参考サイト様