GitHub Pull Request Builder Plugin の多すぎる設定項目を補足してみる

# はじめに

GitHub Pull Request Builder Plugin とは何ぞや？的な内容については、下記のページを参考にしてください。
私も非常に参考になりました。ありがとうございます。

- [Jenkinsでプルリクエストをビルドする](http://qiita.com/quattro_4/items/6b1962909ce868f12e5a)
- [Pull Request Builder PluginをJenkinsに導入する](http://qiita.com/kompiro/items/a097b3b36aa30bc751c6)
- [jenkins で GitHub のプルリクエストをマージしてテストする](http://please-sleep.cou929.nu/jenkins-github-pull-request-builder-plugin.html)

その上でこのページでは、多すぎる設定項目について、上記参考ページでは書かれていない部分や、私がハマった部分などをベースに解説できればと思います。


# システムの設定

GitHub Pull Request Builder のブロックまで移動。

## トークンの生成

__Create API Token...__ から、ID/PW を使ってトークンを生成する。
このとき、前回生成したときのゴミなどが残っていると生成に失敗するので注意。

トークン生成後、下記の通り値を入力したら、一度保存して画面を抜ける。

| 項目 | 設定値 |
|------|-------|
| GitHub Server API URL | https://api.github.com |
| Shared secret | ※上記で生成したトークン |

再度システムの設定から GitHub Pull Request Builder のブロックまで移動。
すると、__Credentials__ プルダウンに先ほど入力した値が候補になっているはずなので、それを選択し Credential の妥当性をチェックしていきます。

## Test Credentials...

### Test basic connection to GitHub にチェック

__Connect to API__ ボタンを押下し、下記の通り表示されれば OK。
```
Connected to https://api.github.com as xxxxxx login: xxxxxxxxxxx
```

### Repository owner/name

ここには Credential の妥当性チェック時に使用するリポジトリの owner/name 部分を設定する。
※対象リポジトリ URL が `https://github.com/naotawool/sample_project` の場合

| 項目 | 設定値 |
|------|-------|
| owner/name  | naotawool/sample_project |

### Test Permissions to a Repository にチェック

__Check repo permissions__ ボタンを押下し、下記の通り表示されれば OK。
```
User has access to: Push, Pull
```

### Test adding comment to Pull Request にチェック

ここにはチェック用に issue へコメントを送信するための情報を設定する。

| 項目 | 設定値 |
|------|-------|
| Issue ID | チェック用 issue 番号 |
| Comment to post | 上記番号で指定した issue へ送信するコメント (何でも OK) |

__Comment to issue__ ボタンを押下し、下記の通り表示されれば OK。
```
Issued comment to issue: https://github.com/naotawool/sample_project/issues/xxxx
```

### Test updating commit status にチェック

ここにはチェック用に Pull & Request のステータスを更新するための情報を設定する。

| 項目 | 設定値 |
|------|-------|
| Commit SHA | PR のマージ元となるブランチのコミットID (ハッシュ値) |
| Commit State | PR に対して設定するステータス (プルダウンから選択) |
| Status url | ステータス欄に表示されるリンクの URL |
| Message to post | ステータス欄に表示するコメント文 |
| Context for the status | ステータス文言 |

実際の設定例と、GitHub 側のイメージ。

| 項目 | 設定値 |
|------|-------|
| Commit SHA | xxxxxxxxxxxxxxxxxxxxx ※任意のコミットID |
| Commit State | SUCCESS |
| Status url | http://localhost/ |
| Message to post | This dummy message. |
| Context for the status | TEST ok |

![ghprb_2.png](https://qiita-image-store.s3.amazonaws.com/0/76368/dfa5ee7f-4bcc-c345-1894-8aa1342899bf.png)



# ジョブの設定

続いて各ジョブの設定について。
参考サイトにて解説されている内容は端折ります。

## Trigger phrase

ここで指定したフレーズをプルリクのコメント欄に入力しても、ビルドが実行されます。
※「ok to test」や「test this please」以外に指定が可能
※ここで指定しても、「ok to test」などは有効のまま

## Only use trigger phrase for build triggering

ここにチェックを入れると、上記の「Trigger phrase」で指定したフレーズが入力されない限り、ビルドが実行されなくなります。

## Close failed pull request automatically?

ここにチェックを入れると、対象プルリクのビルドが失敗した場合、プルリクを自動で close します。
__※チェックを入れて保存し、再度編集を行うとすると、チェック状態が初期化されてしまうバグあり__

## White list
Pull Request を送信する可能性のあるユーザ名を入力。
※Admin list でも List of organizations でもないユーザ

Admin list にも White list にも organizations にも属さないユーザが Pull Request を出した場合、このジョブは下記のコメントを送信します。
`Can one of the admins verify this patch?`
これに対し「Admin list」などに属しているユーザが「`add to whitelist`」とコメントすると、この Pull Request を出したユーザは自動的に「White list」に追加されます
※Jenkins の設定を自動的に書き換えてくれる

## List of organizations. Their members will be whitelisted.
## Allow members of whitelisted organizations as admins

ここにチェックを入れると、「List of organizations」で設定した組織に所属するメンバを admin として許可したことと同じになります。
つまり、「List of organizations」に組織を入力し、ここにチェックを入れれば、Admin list にわざわざ所属メンバを指定する必要はないということです。

## Build description template

Jenkins 側のジョブ履歴に表示する説明文のテンプレート
※デフォルトは、`PR #{PR番号}: {PRタイトル}`

## Whitelist Target Branches

ビルド対象のブランチを指定
ここで指定した名前 (正規表現あり) のブランチがマージ先 (base) に設定されたプルリクのみ、ビルドが実行される
※例えば `develop` や`feature\/.*`とか


# おわりに

てな感じで細かく実行制御を行うことが出来るので、参考にしてみてください。