GitHub Actionsでプルリクエストのレビュワーを自動アサインする手順

## やりたいこと
以下の条件を満たす場合、Reviewers, Assigneesに指定のメンバーを自動で設定する。

- Pull Requestの状態が `Open`, `Ready for review` になった時
- かつ、Pull Requestに `review request` `チーム名` のラベルが付与されている

## 使用したGitHub Actions
今回はこちらのActionを使用させていただきました。
https://github.com/marketplace/actions/auto-assign-action

## 手順
[Usage](https://github.com/marketplace/actions/auto-assign-action#arrow_forward-usage)をベースに条件を追加します。
ここではチーム名は`gremlins`、自分のユーザ名を`gizmo`とします。
 
### yamlファイルの作成
`.github/workflows/pull_request.yml`

```yaml
# labelに基づいてアサイン、レビュワーを設定する
name: auto-assign
on:
  pull_request:
    types: [opened, ready_for_review]
jobs:
  add-reviews:
    if: contains(github.event.pull_request.labels.*.name, 'gremlins') && contains(github.event.pull_request.labels.*.name, 'review request')
    runs-on: ubuntu-latest
    steps:
      - uses: kentaro-m/auto-assign-action@v1.1.0
        with:
          repo-token: "${{ secrets.GITHUB_TOKEN }}"
          configuration-path: ".github/auto_assign_gremlins.yml"

```

`.github/auto_assign_gremlins.yml`

```yaml

# Set to true to add reviewers to pull requests
addReviewers: true

# Set to true to add assignees to pull requests
addAssignees: true

# A list of reviewers to be added to pull requests (GitHub user name)
reviewers:
  - gizmo
  - stripe
  - brownie
  - penny
  - greta


# A number of reviewers added to the pull request
# Set 0 to add all the reviewers (default: 0)
numberOfReviewers: 0

```

### Personal Access Tokenを作成する
https://github.com/settings/tokens
※workflowにチェックをつけること

### git push
```bash
$ curl -u {username}:{token} https://api.github.com/user
$ git push -u origin {branch_name}
```

### Pull Requestを作成する
- ラベルに`review request`, `gremlins`を設定する

### Checksタブを確認

```shell
Run kentaro-m/auto-assign-action@v1.1.04s
Added assignees to PR #1: stripe, brownie, penny, greta
Run kentaro-m/auto-assign-action@v1.1.0
Added reviewers to PR #1: stripe, brownie, penny, greta
Added assignees to PR #1: stripe, brownie, penny, greta
```
このようにログが表示され、Reviewer, Assigneesに自分以外のメンバー全員が設定されたら成功です。
文法が間違っている等、問題がある場合はエラーが表示されます。

## 補足情報
現在Pull Requestに設定されているラベル情報(github.event.pull_request.labels.*.name)などのコンテキストは以下をpushすることでPull RequestのChecksタブから確認できます。
引用： https://help.github.com/ja/actions/reference/context-and-expression-syntax-for-github-actions#contexts

```yaml
on: push

jobs:
  one:
    runs-on: ubuntu-16.04
    steps:
      - name: Dump GitHub context
        env:
          GITHUB_CONTEXT: ${{ toJson(github) }}
        run: echo "$GITHUB_CONTEXT"
      - name: Dump job context
        env:
          JOB_CONTEXT: ${{ toJson(job) }}
        run: echo "$JOB_CONTEXT"
      - name: Dump steps context
        env:
          STEPS_CONTEXT: ${{ toJson(steps) }}
        run: echo "$STEPS_CONTEXT"
      - name: Dump runner context
        env:
          RUNNER_CONTEXT: ${{ toJson(runner) }}
        run: echo "$RUNNER_CONTEXT"
      - name: Dump strategy context
        env:
          STRATEGY_CONTEXT: ${{ toJson(strategy) }}
        run: echo "$STRATEGY_CONTEXT"
      - name: Dump matrix context
        env:
          MATRIX_CONTEXT: ${{ toJson(matrix) }}
        run: echo "$MATRIX_CONTEXT"
```

他に使用できる関数などはこちらに記載されています。
https://help.github.com/ja/actions/reference/context-and-expression-syntax-for-github-actions#operators