From 6224276365e07b39836fcd9cc33bd69a85966b9b Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 2 Aug 2026 22:27:01 +0000 Subject: [PATCH 1/6] =?UTF-8?q?chore(security):=20=F0=9F=94=92=20Codeball?= =?UTF-8?q?=20=E3=81=AB=E3=82=88=E3=82=8B=20PR=E6=89=BF=E8=AA=8D=20?= =?UTF-8?q?=E5=BC=B7=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: genzouw <29957+genzouw@users.noreply.github.com> --- .github/workflows/ai-codeball-approver.yml | 21 +++++++++++++++++++++ docs/security/ai-ci-tools.md | 7 +++++++ 2 files changed, 28 insertions(+) create mode 100644 .github/workflows/ai-codeball-approver.yml diff --git a/.github/workflows/ai-codeball-approver.yml b/.github/workflows/ai-codeball-approver.yml new file mode 100644 index 00000000..43a8b83e --- /dev/null +++ b/.github/workflows/ai-codeball-approver.yml @@ -0,0 +1,21 @@ +name: AI Codeball PR Approver + +on: + pull_request: + types: [opened, synchronize, reopened] + +jobs: + codeball: + runs-on: ubuntu-latest + name: Codeball Approver + permissions: + contents: read + pull-requests: write + steps: + - name: Codeball + uses: sturdy-dev/codeball-action@102067b9f537482cee112577655c85fda56d8926 # v2.6.0 + with: + approvePullRequests: "true" + labelPullRequestsWhenApproved: "true" + labelPullRequestsWhenReviewNeeded: "false" + failJobsWhenReviewNeeded: "false" diff --git a/docs/security/ai-ci-tools.md b/docs/security/ai-ci-tools.md index 1906e62c..1f729d86 100644 --- a/docs/security/ai-ci-tools.md +++ b/docs/security/ai-ci-tools.md @@ -118,3 +118,10 @@ PR作成時にGitHub Models (o3-mini) を利用して、PRテンプレートに 1. **GitHub Secretsの設定 (必須)** - リポジトリ管理者が `Settings > Secrets and variables > Actions` にて `GH_MODELS_TOKEN` を登録している必要があります。 + +## 新規: AI Codeball PR Approver の設定 + +PR作成時にAIがコードをレビューし、安全な変更と判断された場合に自動で承認(Approve)を行う `.github/workflows/ai-codeball-approver.yml` を追加しました。OSS向けの無料AIコードレビューツールである Codeball (`sturdy-dev/codeball-action`) を利用しています。 + +1. **GitHub Secretsの設定** + - 追加のAPIキー設定やシークレット登録は不要です。デフォルトの `GITHUB_TOKEN` を使用して動作します。 From 5f740a90d2d706aff9ade6507e3e2ab023e157e7 Mon Sep 17 00:00:00 2001 From: Toshiaki Wakabayashi Date: Mon, 3 Aug 2026 08:08:19 +0900 Subject: [PATCH 2/6] =?UTF-8?q?fix:=20=F0=9F=90=9B=20[Code=20Review]=20?= =?UTF-8?q?=E3=83=88=E3=83=83=E3=83=97=E3=83=AC=E3=83=99=E3=83=ABpermissio?= =?UTF-8?q?ns=E3=81=AE=E8=BF=BD=E5=8A=A0=E3=81=A8issues:write=E3=81=AE?= =?UTF-8?q?=E4=BB=98=E4=B8=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit .github/workflows/ai-codeball-approver.yml にトップレベルの permissions が 無く、permissions-audit.yml の全ワークフロー監査(^permissions: の存在チェッ ク)に失敗しmainへのマージがブロックされるため、トップレベルに `permissions: contents: read` を追加。 また labelPullRequestsWhenApproved を有効化しているため、Codeball が ラベル(codeball:approved 等)を作成・付与・削除する際に issues: write 権限が必要となるため、ジョブレベルのpermissionsに追加。 レビューコメント: https://github.com/genzouw/monopo/pull/487#discussion_r3700469521, https://github.com/genzouw/monopo/pull/487#discussion_r3700473842 レビュアー: qodo-code-review, coderabbitai 優先度: critical --- .github/workflows/ai-codeball-approver.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ai-codeball-approver.yml b/.github/workflows/ai-codeball-approver.yml index 43a8b83e..33f858ed 100644 --- a/.github/workflows/ai-codeball-approver.yml +++ b/.github/workflows/ai-codeball-approver.yml @@ -4,18 +4,22 @@ on: pull_request: types: [opened, synchronize, reopened] +permissions: + contents: read + jobs: codeball: runs-on: ubuntu-latest name: Codeball Approver permissions: contents: read + issues: write pull-requests: write steps: - name: Codeball uses: sturdy-dev/codeball-action@102067b9f537482cee112577655c85fda56d8926 # v2.6.0 with: - approvePullRequests: "true" - labelPullRequestsWhenApproved: "true" - labelPullRequestsWhenReviewNeeded: "false" - failJobsWhenReviewNeeded: "false" + approvePullRequests: 'true' + labelPullRequestsWhenApproved: 'true' + labelPullRequestsWhenReviewNeeded: 'false' + failJobsWhenReviewNeeded: 'false' From f7c082d7fea079f079a8cd80531243acd889eb52 Mon Sep 17 00:00:00 2001 From: Toshiaki Wakabayashi Date: Mon, 3 Aug 2026 08:08:39 +0900 Subject: [PATCH 3/6] =?UTF-8?q?fix:=20=F0=9F=90=9B=20[Code=20Review]=20wor?= =?UTF-8?q?kflow=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E5=A4=89=E6=9B=B4PR?= =?UTF-8?q?=E3=81=AE=E8=87=AA=E5=8B=95=E6=89=BF=E8=AA=8D=E5=AF=BE=E8=B1=A1?= =?UTF-8?q?=E3=81=8B=E3=82=89=E3=81=AE=E9=99=A4=E5=A4=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Codeball Approver は paths-ignore が無く全PRで動作するため、 .github/workflows/** を変更するPR(本ワークフロー自身の変更を含む)も 自動でApproveされ得た。既存の ai-pr-reviewer.yml 等はCI/セキュリティ設定 変更を人的レビュー必須として .github/workflows/** を明示的に除外している ため、同じ設計方針に合わせて paths-ignore を追加。 レビューコメント: https://github.com/genzouw/monopo/pull/487#discussion_r3700469522 レビュアー: qodo-code-review 優先度: high --- .github/workflows/ai-codeball-approver.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ai-codeball-approver.yml b/.github/workflows/ai-codeball-approver.yml index 33f858ed..5cb7bc08 100644 --- a/.github/workflows/ai-codeball-approver.yml +++ b/.github/workflows/ai-codeball-approver.yml @@ -3,6 +3,8 @@ name: AI Codeball PR Approver on: pull_request: types: [opened, synchronize, reopened] + paths-ignore: + - '.github/workflows/**' permissions: contents: read From f41d0ab93b290f0ee98e134da2b93f93dcd5b900 Mon Sep 17 00:00:00 2001 From: Toshiaki Wakabayashi Date: Mon, 3 Aug 2026 08:08:58 +0900 Subject: [PATCH 4/6] =?UTF-8?q?fix:=20=F0=9F=90=9B=20[Code=20Review]=20?= =?UTF-8?q?=E3=83=AC=E3=83=93=E3=83=A5=E3=83=BC=E8=A6=81=E5=90=A6=E5=88=A4?= =?UTF-8?q?=E5=AE=9A=E3=82=92=E5=8F=AF=E8=A6=96=E5=8C=96=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=83=A9=E3=83=99=E3=83=AB=E8=A8=AD=E5=AE=9A=E3=82=92=E6=9C=89?= =?UTF-8?q?=E5=8A=B9=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit labelPullRequestsWhenReviewNeeded / failJobsWhenReviewNeeded が両方 false のため、Codeball が「要レビュー」と判定してもPR上に何の痕跡も 残らず、承認されなかった理由(要レビューなのか未実行/失敗なのか)が 判別できなかった。CIをブロックはせずラベルのみで可視化する方針とし、 labelPullRequestsWhenReviewNeeded を true に変更。 また labelPullRequestsWhenCarefulReviewNeeded も未指定でデフォルト値 (true) に依存していたため、意図を明示するため明示的に true を設定。 レビューコメント: https://github.com/genzouw/monopo/pull/487#discussion_r3700469523, https://github.com/genzouw/monopo/pull/487#discussion_r3700473846 レビュアー: qodo-code-review, coderabbitai 優先度: medium --- .github/workflows/ai-codeball-approver.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ai-codeball-approver.yml b/.github/workflows/ai-codeball-approver.yml index 5cb7bc08..a3d3761d 100644 --- a/.github/workflows/ai-codeball-approver.yml +++ b/.github/workflows/ai-codeball-approver.yml @@ -23,5 +23,6 @@ jobs: with: approvePullRequests: 'true' labelPullRequestsWhenApproved: 'true' - labelPullRequestsWhenReviewNeeded: 'false' + labelPullRequestsWhenReviewNeeded: 'true' + labelPullRequestsWhenCarefulReviewNeeded: 'true' failJobsWhenReviewNeeded: 'false' From 854af671e1595113c2d5b75a137d931c4d3c3e6d Mon Sep 17 00:00:00 2001 From: Toshiaki Wakabayashi Date: Mon, 3 Aug 2026 08:09:24 +0900 Subject: [PATCH 5/6] =?UTF-8?q?fix:=20=F0=9F=90=9B=20[Code=20Review]=20Cod?= =?UTF-8?q?eball=E5=AE=9F=E8=A1=8C=E3=82=BF=E3=82=A4=E3=83=9F=E3=83=B3?= =?UTF-8?q?=E3=82=B0=E3=81=AE=E8=AA=AC=E6=98=8E=E3=82=92=E5=AE=9F=E9=9A=9B?= =?UTF-8?q?=E3=81=AE=E3=83=88=E3=83=AA=E3=82=AC=E3=83=BC=E3=81=AB=E5=90=88?= =?UTF-8?q?=E3=82=8F=E3=81=9B=E3=81=A6=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 「PR作成時」という記載は、実際のワークフロー(.github/workflows/ai-codeball-approver.yml) が opened に加えて synchronize / reopened でも実行される挙動を反映していな かった。PR更新(コミット追加)時にも再度Approve判定が走ることが伝わるよ う「PRの作成・更新・再オープン時」に修正。 レビューコメント: https://github.com/genzouw/monopo/pull/487#discussion_r3700469525, https://github.com/genzouw/monopo/pull/487#discussion_r3700473849 レビュアー: qodo-code-review, coderabbitai 優先度: low --- docs/security/ai-ci-tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/security/ai-ci-tools.md b/docs/security/ai-ci-tools.md index 1f729d86..70010c5c 100644 --- a/docs/security/ai-ci-tools.md +++ b/docs/security/ai-ci-tools.md @@ -121,7 +121,7 @@ PR作成時にGitHub Models (o3-mini) を利用して、PRテンプレートに ## 新規: AI Codeball PR Approver の設定 -PR作成時にAIがコードをレビューし、安全な変更と判断された場合に自動で承認(Approve)を行う `.github/workflows/ai-codeball-approver.yml` を追加しました。OSS向けの無料AIコードレビューツールである Codeball (`sturdy-dev/codeball-action`) を利用しています。 +PRの作成・更新・再オープン時にAIがコードをレビューし、安全な変更と判断された場合に自動で承認(Approve)を行う `.github/workflows/ai-codeball-approver.yml` を追加しました。OSS向けの無料AIコードレビューツールである Codeball (`sturdy-dev/codeball-action`) を利用しています。 1. **GitHub Secretsの設定** - 追加のAPIキー設定やシークレット登録は不要です。デフォルトの `GITHUB_TOKEN` を使用して動作します。 From 5e6a1028522cfcc57ef5061a62b77108409ff8a8 Mon Sep 17 00:00:00 2001 From: Toshiaki Wakabayashi Date: Mon, 3 Aug 2026 08:09:51 +0900 Subject: [PATCH 6/6] =?UTF-8?q?fix:=20=F0=9F=90=9B=20[Code=20Review]=20Cod?= =?UTF-8?q?eball=E5=8B=95=E4=BD=9C=E3=81=AB=E5=BF=85=E8=A6=81=E3=81=AA?= =?UTF-8?q?=E3=83=AA=E3=83=9D=E3=82=B8=E3=83=88=E3=83=AA=E8=A8=AD=E5=AE=9A?= =?UTF-8?q?=E3=81=A8fork=20PR=E3=81=AE=E5=88=B6=E7=B4=84=E3=82=92=E6=98=8E?= =?UTF-8?q?=E8=A8=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Codeball Approver は pull-requests: write / issues: write で承認とラベル 付与を行うが、リポジトリ側で「Allow GitHub Actions to create and approve pull requests」が有効化されていないと動作しないこと、および fork PR では GITHUB_TOKEN に書き込み権限が付与されないため自動承認・ラベル付与が行われ ない場合があることがドキュメントに記載されていなかったため追記。 レビューコメント: https://github.com/genzouw/monopo/pull/487#discussion_r3700473850 レビュアー: coderabbitai 優先度: medium --- docs/security/ai-ci-tools.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/security/ai-ci-tools.md b/docs/security/ai-ci-tools.md index 70010c5c..b266b78a 100644 --- a/docs/security/ai-ci-tools.md +++ b/docs/security/ai-ci-tools.md @@ -125,3 +125,7 @@ PRの作成・更新・再オープン時にAIがコードをレビューし、 1. **GitHub Secretsの設定** - 追加のAPIキー設定やシークレット登録は不要です。デフォルトの `GITHUB_TOKEN` を使用して動作します。 + +2. **リポジトリ設定 (必須)** + - `.github/workflows/ai-codeball-approver.yml` はPRの自動承認・ラベル付与のために `pull-requests: write` / `issues: write` を利用します。これを機能させるには、リポジトリの `Settings > Actions > General > Workflow permissions` にて `Allow GitHub Actions to create and approve pull requests` を有効にしてください。 + - フォークからのPR(`pull_request` イベント)では `GITHUB_TOKEN` に書き込み権限が付与されないため、フォークPRに対しては自動承認・ラベル付与が行われない場合があります。