🤖

CodeRabbit(ai-pr-reviewer) で特定ラベル付与した時のみAIレビューしてもらうようにするとAIが返信してくれない

2024/12/02に公開

CodeRabbitとかGithubActionsとかの導入は省きます

問題

GithubActionsでCodeRabbit導入時、特定ラベル(ai reviewみたいなの)を付けたらAIレビューが走るようにしました

ラベルでレビュー起動はうまくいったものの、今度はレビューへのコメントに返信してくれなくなってしまいました

なぜ?

if: github.event.label.name == 'ai review'

だとlabeledイベントでのlabelしか参照されず、AIの返信まで弾かれてしまうためです

対応?

if: |
(github.event.pull_request.labels.*.name == 'ai review') ||
(github.event.label.name == 'ai review')

labeledではなくPR自体のイベントからlabel情報を参照することでifを通せばいいのでは?

と思い上記コードを試しましたがダメでした。

github.event.pull_requestはあくまでPRが作成された時の情報なので、後から付けたlabelは出てこないみたいです。

対応2

調べたらどうやらgh apiを叩いて最新のlabelsの状態を参照できればいいみたいでした。
なのでこうします。

if: |
      CURRENT_LABELS=$(gh api -H "Accept: application/vnd.github+json" /repos/ORG/REPO/issues/${{ github.event.pull_request.number }}/labels)
      ("$CURRENT_LABELS".*.name == 'ai review') ||
      (github.event.label.name == 'ai review')

これでai reviewラベルを貼った際にレビューが走り、コメントも返信してくれました。

余談

というのをPRに出してレビューしてもらったところ

😂

if: |
      CURRENT_LABELS=$(gh api -H "Accept: application/vnd.github+json" /repos/ORG/REPO/issues/${{ github.event.pull_request.number }}/labels) || { echo "Failed to fetch labels"; exit 1; }
      ("$CURRENT_LABELS".*.name == 'ai review') ||
      (github.event.label.name == 'ai review')

参考

https://zenn.dev/egstock_inc/articles/86c07c9fe3bddf
https://github.com/orgs/community/discussions/39062

Discussion