はじめに
ソフトウェア開発において、コードレビューは品質向上のために欠かせません。
しかし、馴染みのないコードをレビューする際には時間がかかり、見落としのリスクもあります。
本記事では、Amazon Bedrock と PR-Agent を活用し、コードレビューを効率化する方法を紹介します。
PR-Agent を利用することで、PR の変更点を自動でリストアップし、レビュー時に注目すべきポイントを整理 してくれます。
さらに、修正が必要な箇所について具体的な提案を行うため、レビュアーの負担を軽減しつつ、コードの品質向上をサポート します。
前提条件
- AWSアカウントにて Claude 3.5 Sonetを有効化していること
Amazon Bedrock の開始方法 - Amazon Bedrock - GitHubのリポジトリが存在すること
設定方法
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 の変更点の要約、修正の提案、レビューガイドの提供などが自動で作成されるため、レビュアーの負担を軽減することが可能です。