Amazon Bedrock × PR-Agent でコードレビューを自動化!

記事タイトルとURLをコピーする

はじめに

ソフトウェア開発において、コードレビューは品質向上のために欠かせません。
しかし、馴染みのないコードをレビューする際には時間がかかり、見落としのリスクもあります。

本記事では、Amazon Bedrock と PR-Agent を活用し、コードレビューを効率化する方法を紹介します。
PR-Agent を利用することで、PR の変更点を自動でリストアップし、レビュー時に注目すべきポイントを整理 してくれます。
さらに、修正が必要な箇所について具体的な提案を行うため、レビュアーの負担を軽減しつつ、コードの品質向上をサポート します。

前提条件

設定方法

1. ポリシーの作成

Bedrock API にアクセスするための IAM ポリシー を作成します。
下記のポリシーを作成します。

ポリシー名: GitHubActionsOIDCPolicy

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "bedrock:InvokeModel",
                "bedrock:InvokeModelWithResponseStream"
            ],
            "Resource": [
                "arn:aws:bedrock:*::foundation-model/anthropic.*"
            ]
        }
    ]
}

2. ロールの作成

Bedrock API にアクセスするための IAM ロール を作成します。
下記のロールを作成します。

信頼されたエンティティタイプ: カスタム信頼ポリシー
許可ポリシー: GitHubActionsOIDCRole

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::[AWSアカウント]:oidc-provider/token.actions.githubusercontent.com"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
                },
                "StringLike": {
                    "token.actions.githubusercontent.com:sub": "repo:[リポジトリのORG]/[リポジトリ名]:*"
                }
            }
        }
    ]
}

3.IDプロパイダの追加

IAM⇨IDプロパイダの追加より下記設定で作成します。

プロバイダのタイプ:OpenID Connect
プロパイダのURL:https://token.actions.githubusercontent.com
対象者:sts.amazonaws.com

以上で、AWS上での設定は完了です。

4.GitHubシークレット作成

PR-Agent を Amazon Bedrock と連携させるために、GitHub シークレット に AWS の設定値を登録します。
指定のリポジトリへ移動し、「Secrets and variables」⇨「Actions」⇨「New repository secret」より下記を追加

シークレット名 設定内容
AWS_REGION ap-northeast-1
AWS_ROLE_ARN GitHubActionsOIDCRole ロールの ARN

5.リポジトリに設定ファイルの追加

PR-Agent を動作させるために、GitHub リポジトリに設定ファイルを追加します。
リポジトリの指定のディレクトリに下記内容で .github/workflows/pr-review.yml を作成

name: PR Review with Bedrock

on:
  pull_request:
    types: [opened, reopened, synchronize]

jobs:
  review:
    if: ${{ github.event.sender.type != 'Bot' }}
    runs-on: ubuntu-latest

    permissions:
      contents: read
      pull-requests: write
      id-token: write

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
          aws-region: ${{ secrets.AWS_REGION }}

      - name: Run Pr-Agent with AWS Bedrock
        uses: Codium-ai/pr-agent@main
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

次に設定ファイル.pr_agent.tomlルートディレクトリに追加

[config]
model = "bedrock/anthropic.claude-3-5-sonnet-20240620-v1:0"

[github_action_config]
auto_review = true
auto_improve = true

[pr_reviewer]
extra_instructions = "answer in Japanese"
num_code_suggestions=3
inline_code_comments = true
ask_and_reflect = true

[pr_description]
extra_instructions = "answer in Japanese"

[pr_code_suggestions]
extra_instructions = "answer in Japanese"

[pr_add_docs]
extra_instructions = "answer in Japanese"

[pr_questions]
extra_instructions = "answer in Japanese"

[pr_update_changelog]
extra_instructions = "answer in Japanese"

[pr_test]
extra_instructions = "answer in Japanese"

[pr_improve_component]
extra_instructions = "answer in Japanese"

以上で設定は完了です。

6.動作確認

設定を入れたブランチに対して、プルリクエストを作成します。
プルリクエストに下記の情報が表示されれば成功です。

  • プルリクエストの説明

  • レビューガイド

  • 修正の提案

おわり

本記事では、Amazon Bedrock と PR-Agent を活用して、コードレビューを自動化・効率化する方法を紹介しました。
PR-Agent を利用することで、PR の変更点の要約、修正の提案、レビューガイドの提供などが自動で作成されるため、レビュアーの負担を軽減することが可能です。