7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

組織の管理者でもない僕が、組織のプライベートリポジトリにGitHub Appsを使ってPRでreviewdogにコメントさせるまで

Posted at

はじめに

組織のプライベートリポジトリに、PRが作られるたびGitHub Actionsを用いてreviewdogにESLintのエラーをコメントさせようと思いました。
しかし、reviewdogのREADME.mdに書いてあるようにデフォルトのGitHub Tokenを使っても、そのTokenにはPRへコメントする権限がなかったです(故に、コメントできなかった。。)。

そこで、 GitHub Apps を使用する方法を採用することにしました!

ただし、自分は組織の管理者ではないので、 組織にGitHub Appsを作ることもインストールすることもできません。
あーだこーだやって最終的にはできましたが、それなりにつまづいたので、つまづきポイントと共に記事にして供養します!

前提知識

個人のトークンではなく、GitHub Appsを使うメリット

  • 誰が辞めても継続して動く

手順

1. GitHub Appsの作成

Register new GitHub Appから、GitHub Appsを作成します。

プロパティは以下の通りです。

  • GitHub App name
    • お好みのアプリ名を入れます
  • Homepage URL
    • プライベートリポジトリで使う想定なのでここは任意のURLを入れます
  • Webhook
    • 不要なのでActiveのチェックを外してください
  • Permissions

その他の項目はデフォルト設定のままで構いません。

公式ドキュメント

2. GitHub Appsの権限を組織に移譲

  1. 先ほど個人で作成したGitHub Appsの詳細画面へ遷移します
  2. 左側のサイドバーで詳細設定(Advanced)をクリックします
  3. 「Type the name of the GitHub App to confirm」に移譲するアプリ名を、「New owner's GitHub username or organization name」にアプリの権限を移譲したい組織名を入力します
  4. 「Transfer this GitHub App」をクリックします
  5. 社内のOwner権限をもつ方へ連絡して、承認をしてもらいます

この承認依頼から「4. GitHub Appsを使用したいリポジトリにインストール」までの手順は、Owner権限をもつ方に依頼しなければできない可能性があるので、作業手順とともに依頼すると、コミュニケーション回数が減るのでおすすめです

参考記事

公式ドキュメント

3. GitHub AppsのApp IDとPrivate KeyをGitHubに登録

  1. GitHub AppsのApp IDをコピーします
  2. GitHub AppsのPrivate Keyを生成して、コピーします
  3. GitHubのSecretsにコピーしたApp IDとPrivate Keyを登録します(権限がない場合は、先ほど移譲した時に依頼した人もしくはSecretsの設定ができる社内の誰かへ、依頼します)

僕は間違えてPrivate KeyではなくClient Secretを生成してしまいましたので、間違えないようにしましょう!もし間違えた場合、後述のトークン生成時にエラーが出ます。
ref: https://github.com/tibdex/github-app-token/issues/18#issuecomment-829660844

4. GitHub Appsを使用したいリポジトリにインストール

  1. GitHub アプリの設定 ページで、アプリを選択します
  2. 左側のサイドバーで、 「アプリのインストール」 をクリックします
  3. 適切なリポジトリを含む組織または個人アカウントの横にある 「インストール」 をクリックします
  4. すべてのリポジトリ、もしくは選択したリポジトリにアプリケーションをインストールしてください

この作業までOwner権限が必要な可能性があります

公式ドキュメント

5. GitHub Actionsにreviewdogが動くステップを追加

以下のステップを GitHub Actions のyamlファイルに追加します。

- name: Generate token
  id: generate_token
  uses: tibdex/github-app-token@v1
  with: 
    app_id: ${{ secrets.REVIEDOG_APP_ID }} # ここは先ほどSecretに登録したApp IDのkeyを入力
    private_key: ${{ secrets.REVIEDOG_PRIVATE_KEY }} # ここは先ほどSecretに登録したPrivate Keyのkeyを入力
- uses: reviewdog/action-eslint@v1
  with:
    github_token: ${{ steps.generate_token.outputs.token }}
    reporter: 'github-pr-review'

独立して動かしたい場合は、以下のコードをコピペして試してください!

name: reviewdog for eslint
on: [pull_request]
jobs:
  eslint:
    name: run reviewdog for eslint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Generate token
        id: generate_token
        uses: tibdex/github-app-token@v1
        with: 
          app_id: ${{ secrets.REVIEDOG_APP_ID }}
          private_key: ${{ secrets.REVIEDOG_PRIVATE_KEY }}
      - uses: reviewdog/action-eslint@v1
        with:
          github_token: ${{ steps.generate_token.outputs.token }}
          reporter: 'github-pr-review'

このyamlファイルを定義して、GitHub Actionsが走っても、実際にはコメントされない可能性があります。Read and write access to checks, code, and pull requests という文言を含んだ要求メールが管理者に飛んでいるかもしれません。確認しましょう。

まとめ

いかがだったでしょうか!
PRにコメントを追加させるために、管理者権限を持っていないがために、少し余分にステップを踏まなきゃいけず、大変でした。。管理者の方の時間もとってしまうため、できるだけ全体の流れを把握してから依頼ができるよう、まとめてみました。誰かのお役に立てれば幸いです :bow:

7
2
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
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?