1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Github Actions+PR-Agent+Amazon Bedrock

Last updated at Posted at 2025-07-29

概要

Github ActionsへPR-Agentを設定し、プルリクエストの自動レビューを動作させます。
生成AIはAWSの Amazon Bedrock(Anthropic Claude 3.5 Sonnect-東京リージョン)を使用します。
AWSへのアクセスについてはOpenIDを設定します。

補足:

  • 現在Amazon Bedrockでは、ベースモデル・リージョンの組み合わせによって、ベースモデルのInvokeができる/できない、推論プロファイルのみ使用可能、など、少しややこしい状況となっています
  • このため、東京リージョン(ap-northeast-1)+Anthropic Calude 3.5 Sonetのベースモデル、と特定して設定します
  • Claude 3.5 Sonnetを選択しているのは、PR-Agentが対応しているBedrockモデルであるためです

設定手順

AWS側の設定

Amazon Bedrockを使用するための設定を行います。
AWSコンソールページで操作します。

IAMポリシー作成

[IAM > ポリシー] より新規ポリシーを作成します。
下記JSONテキストをそのままコピーペーストし、ポリシー名を GitHubAgentPolicy としました。

image.png

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

IDプロバイダ作成

[IAM > IDプロバイダ] より下記を指定/入力して作成します。

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

参考:
https://docs.github.com/ja/actions/how-tos/secure-your-work/security-harden-deployments/oidc-in-aws

image.png

ロール作成

[IAM > ロール] より新規ロールを作成します。

ロール作成:ステップ1

下記のように指定/入力して進めます。

信頼されたエンティティタイプ: [ウェブアイデンティティ] を選択
アイデンティティプロバイダー: [token.actions.githubusercontent.com] を選択
Audience: [sts.amazonaws.com] を選択
GitHub organization: 対象とするGitHub組織を入力
GitHub repository: *
GitHub branch: *

image.png

※前のステップで作成したIDプロバイダを選択できるようになっており、GitHub用のフォームが用意されているようです。GitHub組織、リポジトリ、ブランチは適切に指定します。

ロール作成:ステップ2

許可ポリシーは前のステップで作成した [GitHubAgentPolicy] を選択します。

ロール作成:ステップ3

ロール名は GitHubAgentRole としました。

ロール作成後、ARNをコピーし、控えておきます。
下記のようなテキストになります。

arn:aws:iam::123456789012:role/GitHubAgentRole

Github Actions用の設定

アクション実行用ファイルを作成

アクション実行するためのファイルを作成し、リポジトリへ含めます。

公式の設定を参照、アレンジします。

AWS

.github/workflows/pr-agent.yml
on:
  pull_request:
    types: [opened, reopened, ready_for_review]
  issue_comment:
jobs:
  pr_agent_job:
    if: ${{ github.event.sender.type != 'Bot' }}
    runs-on: ubuntu-latest
    permissions:
      issues: write
      pull-requests: write
      contents: write
      id-token: write
    steps:
      - name: Configure AWS credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          aws-region: ap-northeast-1
          role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
      - name: PR Agent action step
        uses: qodo-ai/pr-agent@main
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

設定ファイルを作成

モデル指示などを行うファイルを作成します。リポジトリのトップに配置します。

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

[pr_reviewer]
extra_instructions = "answer in Japanese"

[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"

設定ファイルをpush

上記で作成した2つのファイルを commit、pushします。

Actions secretsを設定

GitHubのリポジトリページより、AWSアクセスに使用するロールを設定します。

Settings > Secrets and variables > Actions > Repository secrets

AWS_ROLE_ARN へ AWS側の設定で作成したロールARNを設定します。

image.png

動作確認

コードを修正してPullRequestを作成してみます。
dogと入力したら「ワンワン」と表示する処理でしたが、猫の動作を追加しています。
適当ですが、なんとなく意味のある(?)ような変更をしています。

image.png

コメントは空欄にした手抜きプルリクエストを作成します。
自動的にジョブが実行され、コメントを記述してくれていますね。
レビュー、変更についての指摘もしてくれています。
上手く動作してくれました。

image.png

最後に

GitHub ActionsとPR-Agentの設定記事はたくさんあり、参考にさせていただきました。
ただ、対応している生成AIサービスや基盤モデルが多いことや、PR-Agent、その他関連モジュールも進化が早いたえ、自分の環境にマッチする内容を探すのが大変な印象です。
本ポストも同様、すぐに古くなりますので、各種記事は参考にしつつ、最新の公式情報をベースにするのが良いと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?