🤖
CodeRabbit(ai-pr-reviewer) で特定ラベル付与した時のみAIレビューしてもらうようにするとAIが返信してくれない
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')
参考
Discussion