Claude Code GitHub Actions
Claude Code ãéçºã¯ãŒã¯ãããŒã«çµ±åãã Claude Code GitHub Actions ã«ã€ããŠåŠã³ãŸã
Claude Code GitHub Actions ã¯ãGitHub ã¯ãŒã¯ãããŒã« AI ãæŽ»çšããèªååããããããŸããä»»æã® PR ãŸãã¯ã€ã·ã¥ãŒã§ @claude ãšã¡ã³ã·ã§ã³ããã ãã§ãClaude ã¯ã³ãŒããåæãããã«ãªã¯ãšã¹ããäœæããæ©èœãå®è£
ãããã°ãä¿®æ£ã§ããŸãããã¹ãŠãããžã§ã¯ãã®æšæºã«åŸããªããå®è¡ãããŸãããã¹ãŠã® PR ã«èªåçã«æçš¿ãããã¬ãã¥ãŒã«ã€ããŠã¯ãGitHub Code Review ãåç
§ããŠãã ããã
Claude Code GitHub Actions 㯠Claude Agent SDK ã®äžã«æ§ç¯ãããŠãããClaude Code ãã¢ããªã±ãŒã·ã§ã³ã«ããã°ã©ã çã«çµ±åã§ããŸããSDK ã䜿çšããŠãGitHub Actions ãè¶ ããã«ã¹ã¿ã èªååã¯ãŒã¯ãããŒãæ§ç¯ã§ããŸãã
Claude Opus 4.7 ãå©çšå¯èœã«ãªããŸããã Claude Code GitHub Actions ã¯ããã©ã«ãã§ Sonnet ã䜿çšããŸããOpus 4.7 ã䜿çšããã«ã¯ãmodel ãã©ã¡ãŒã¿ ã claude-opus-4-7 ã«èšå®ããŠãã ããã
Claude Code GitHub Actions ã䜿çšããçç±
- å³åº§ã® PR äœæ: å¿ èŠãªããšã説æãããšãClaude ã¯å¿ èŠãªãã¹ãŠã®å€æŽãå«ãå®å šãª PR ãäœæããŸã
- èªåã³ãŒãå®è£ : ã€ã·ã¥ãŒã 1 ã€ã®ã³ãã³ãã§åäœããã³ãŒãã«å€æããŸã
- æšæºã«åŸã: Claude ã¯
CLAUDE.mdã¬ã€ãã©ã€ã³ãšæ¢åã®ã³ãŒããã¿ãŒã³ãå°éããŸã - ã·ã³ãã«ãªã»ããã¢ãã: ã€ã³ã¹ããŒã©ãŒãš API ããŒã§æ°åã§éå§ã§ããŸã
- ããã©ã«ãã§å®å š: ã³ãŒã㯠Github ã®ã©ã³ããŒã«çãŸããŸã
Claude ã¯äœãã§ããŸããïŒ
Claude Code ã¯ãã³ãŒãã®æäœæ¹æ³ãå€ãã匷å㪠GitHub Action ãæäŸããŸãã
Claude Code Action
ãã® GitHub Action ã«ãããGitHub Actions ã¯ãŒã¯ãããŒå ã§ Claude Code ãå®è¡ã§ããŸããClaude Code ã®äžã«ä»»æã®ã«ã¹ã¿ã ã¯ãŒã¯ãããŒãæ§ç¯ããããã«äœ¿çšã§ããŸãã
ã»ããã¢ãã
ã¯ã€ãã¯ã»ããã¢ãã
ãã®ã¢ã¯ã·ã§ã³ãã»ããã¢ããããæãç°¡åãªæ¹æ³ã¯ãã¿ãŒããã«ã§ Claude Code ã䜿çšããããšã§ããclaude ãéã㊠/install-github-app ãå®è¡ããã ãã§ãã
ãã®ã³ãã³ãã¯ãGitHub ã¢ããªãšå¿ èŠãªã·ãŒã¯ã¬ããã®ã»ããã¢ãããã¬ã€ãããŸãã
- GitHub ã¢ããªãã€ã³ã¹ããŒã«ããŠã·ãŒã¯ã¬ããã远å ããã«ã¯ããªããžããªç®¡çè ã§ããå¿ èŠããããŸã
- GitHub ã¢ããªã¯ãContentsãIssuesãPull requests ã«å¯Ÿããèªã¿åããšæžã蟌ã¿ã®ã¢ã¯ã»ã¹èš±å¯ããªã¯ãšã¹ãããŸã
- ãã®ã¯ã€ãã¯ã¹ã¿ãŒãæ¹æ³ã¯ãçŽæ¥ Claude API ãŠãŒã¶ãŒã®ã¿ãå©çšã§ããŸããAmazon Bedrock ãŸã㯠Google Vertex AI ã䜿çšããŠããå Žåã¯ãAmazon Bedrock ãš Google Vertex AI ã§ã®äœ¿çš ã»ã¯ã·ã§ã³ãåç §ããŠãã ããã
æåã»ããã¢ãã
/install-github-app ã³ãã³ãã倱æããå ŽåããŸãã¯æåã»ããã¢ãããåžæããå Žåã¯ã以äžã®æåã»ããã¢ããæé ã«åŸã£ãŠãã ããã
-
Claude GitHub ã¢ããªããªããžããªã«ã€ã³ã¹ããŒã«: https://github.com/apps/claude
Claude GitHub ã¢ããªã«ã¯ã以äžã®ãªããžããªã¢ã¯ã»ã¹èš±å¯ãå¿ èŠã§ãã
- Contents: èªã¿åããšæžã蟌ã¿ïŒãªããžããªãã¡ã€ã«ã倿ŽããããïŒ
- Issues: èªã¿åããšæžã蟌ã¿ïŒã€ã·ã¥ãŒã«å¿çããããïŒ
- Pull requests: èªã¿åããšæžã蟌ã¿ïŒPR ãäœæããŠå€æŽãããã·ã¥ããããïŒ
ã»ãã¥ãªãã£ãšã¢ã¯ã»ã¹èš±å¯ã®è©³çްã«ã€ããŠã¯ãã»ãã¥ãªãã£ããã¥ã¡ã³ã ãåç §ããŠãã ããã
-
ANTHROPIC_API_KEY ããªããžããªã·ãŒã¯ã¬ããã«è¿œå (GitHub Actions ã§ã·ãŒã¯ã¬ããã䜿çšããæ¹æ³ãåŠã¶)
-
ã¯ãŒã¯ãããŒãã¡ã€ã«ãã³ã㌠examples/claude.yml ãããªããžããªã®
.github/workflows/ã«ã³ããŒããŸã
ã¯ã€ãã¯ã¹ã¿ãŒããŸãã¯æåã»ããã¢ããã®ãããããå®äºããåŸãã€ã·ã¥ãŒãŸã㯠PR ã³ã¡ã³ãã§ @claude ãã¿ã°ä»ãããŠã¢ã¯ã·ã§ã³ããã¹ãããŸãã
ããŒã¿çããã®ã¢ããã°ã¬ãŒã
Claude Code GitHub Actions v1.0 ã¯ãããŒã¿çãã v1.0 ã«ã¢ããã°ã¬ãŒãããããã«ã¯ãŒã¯ãããŒãã¡ã€ã«ãæŽæ°ããå¿ èŠãããç Žå£çãªå€æŽãå°å ¥ããŠããŸãã
çŸåš Claude Code GitHub Actions ã®ããŒã¿çã䜿çšããŠããå Žåã¯ãã¯ãŒã¯ãããŒã GA ããŒãžã§ã³ã䜿çšããããã«æŽæ°ããããšããå§ãããŸããæ°ããããŒãžã§ã³ã¯ãèªåã¢ãŒãæ€åºãªã©ã®åŒ·åãªæ°æ©èœã远å ããªãããèšå®ãç°¡çŽ åããŸãã
éèŠãªå€æŽ
ãã¹ãŠã®ããŒã¿ãŠãŒã¶ãŒã¯ãã¢ããã°ã¬ãŒãããããã«ã¯ãŒã¯ãããŒãã¡ã€ã«ã§ä»¥äžã®å€æŽãè¡ãå¿ èŠããããŸãã
- ã¢ã¯ã·ã§ã³ããŒãžã§ã³ãæŽæ°:
@betaã@v1ã«å€æŽããŸã - ã¢ãŒãèšå®ãåé€:
mode: "tag"ãŸãã¯mode: "agent"ãåé€ããŸãïŒçŸåšã¯èªåæ€åºïŒ - ããã³ããå
¥åãæŽæ°:
direct_promptãpromptã«çœ®ãæããŸã - CLI ãªãã·ã§ã³ãç§»å:
max_turnsãmodelãcustom_instructionsãªã©ãclaude_argsã«å€æããŸã
ç Žå£çãªå€æŽãªãã¡ã¬ã³ã¹
| å€ãããŒã¿å ¥å | æ°ãã v1.0 å ¥å |
|---|---|
mode |
ïŒåé€ - èªåæ€åºïŒ |
direct_prompt |
prompt |
override_prompt |
prompt with GitHub variables |
custom_instructions |
claude_args: --append-system-prompt |
max_turns |
claude_args: --max-turns |
model |
claude_args: --model |
allowed_tools |
claude_args: --allowedTools |
disallowed_tools |
claude_args: --disallowedTools |
claude_env |
settings JSON format |
ååŸã®äŸ
ããŒã¿ç:
- uses: anthropics/claude-code-action@beta
with:
mode: "tag"
direct_prompt: "Review this PR for security issues"
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
custom_instructions: "Follow our coding standards"
max_turns: "10"
model: "claude-sonnet-4-6"
GA ããŒãžã§ã³ïŒv1.0ïŒ:
- uses: anthropics/claude-code-action@v1
with:
prompt: "Review this PR for security issues"
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
claude_args: |
--append-system-prompt "Follow our coding standards"
--max-turns 10
--model claude-sonnet-4-6
ã¢ã¯ã·ã§ã³ã¯ãèšå®ã«åºã¥ããŠãã€ã³ã¿ã©ã¯ãã£ãã¢ãŒãïŒ@claude ã¡ã³ã·ã§ã³ã«å¿çïŒãŸãã¯èªååã¢ãŒãïŒããã³ããä»ãã§å³åº§ã«å®è¡ïŒã§å®è¡ãããã©ãããèªåçã«æ€åºããŸãã
䜿çšäŸ
Claude Code GitHub Actions ã¯ãããŸããŸãªã¿ã¹ã¯ã«åœ¹ç«ã¡ãŸããexamples ãã£ã¬ã¯ã㪠ã«ã¯ãããŸããŸãªã·ããªãªçšã®äœ¿çšå¯èœãªã¯ãŒã¯ãããŒãå«ãŸããŠããŸãã
åºæ¬çãªã¯ãŒã¯ãããŒ
name: Claude Code
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
jobs:
claude:
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
# Responds to @claude mentions in comments
skills ã䜿çšãã
name: Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "Review this pull request for code quality, correctness, and security. Analyze the diff, then post your findings as review comments."
claude_args: "--max-turns 5"
ããã³ããã䜿çšããã«ã¹ã¿ã èªåå
name: Daily Report
on:
schedule:
- cron: "0 9 * * *"
jobs:
report:
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "Generate a summary of yesterday's commits and open issues"
claude_args: "--model opus"
äžè¬çãªäœ¿çšäŸ
ã€ã·ã¥ãŒãŸã㯠PR ã³ã¡ã³ãå ïŒ
@claude implement this feature based on the issue description
@claude how should I implement user authentication for this endpoint?
@claude fix the TypeError in the user dashboard component
Claude ã¯èªåçã«ã³ã³ããã¹ããåæããé©åã«å¿çããŸãã
ãã¹ããã©ã¯ãã£ã¹
CLAUDE.md èšå®
ãªããžããªã«ãŒãã« CLAUDE.md ãã¡ã€ã«ãäœæããŠãã³ãŒãã¹ã¿ã€ã«ã¬ã€ãã©ã€ã³ãã¬ãã¥ãŒåºæºããããžã§ã¯ãåºæã®ã«ãŒã«ãããã³æšå¥šãã¿ãŒã³ãå®çŸ©ããŸãããã®ãã¡ã€ã«ã¯ãClaude ã®ãããžã§ã¯ãæšæºã®çè§£ãã¬ã€ãããŸãã
ã»ãã¥ãªãã£ã«é¢ããèæ ®äºé
API ããŒããªããžããªã«çŽæ¥ã³ãããããªãã§ãã ããã
ã¢ã¯ã»ã¹èš±å¯ãèªèšŒããã¹ããã©ã¯ãã£ã¹ãå«ãå æ¬çãªã»ãã¥ãªãã£ã¬ã€ãã³ã¹ã«ã€ããŠã¯ãClaude Code Action ã»ãã¥ãªãã£ããã¥ã¡ã³ã ãåç §ããŠãã ããã
åžžã« GitHub Secrets ã API ããŒã«äœ¿çšããŸãã
- API ããŒã
ANTHROPIC_API_KEYãšããååã®ãªããžããªã·ãŒã¯ã¬ãããšããŠè¿œå ããŸã - ã¯ãŒã¯ãããŒã§åç
§ããŸã:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }} - ã¢ã¯ã·ã§ã³ã®ã¢ã¯ã»ã¹èš±å¯ãå¿ èŠãªãã®ã ãã«å¶éããŸã
- ããŒãžããåã« Claude ã®ææ¡ã確èªããŸã
åžžã« GitHub SecretsïŒäŸãã°ã${{ secrets.ANTHROPIC_API_KEY }}ïŒã䜿çšããAPI ããŒãã¯ãŒã¯ãããŒãã¡ã€ã«ã«çŽæ¥ããŒãã³ãŒãããªãã§ãã ããã
ããã©ãŒãã³ã¹ã®æé©å
ã€ã·ã¥ãŒãã³ãã¬ãŒãã䜿çšããŠã³ã³ããã¹ããæäŸããCLAUDE.md ãç°¡æœã§çŠç¹ãçµã£ããã®ã«ä¿ã¡ãã¯ãŒã¯ãããŒã«é©åãªã¿ã€ã ã¢ãŠããèšå®ããŸãã
CI ã³ã¹ã
Claude Code GitHub Actions ã䜿çšããå Žåãé¢é£ããã³ã¹ãã«æ³šæããŠãã ããã
GitHub Actions ã³ã¹ã:
- Claude Code 㯠GitHub ãã¹ãã©ã³ããŒã§å®è¡ãããGitHub Actions ã®åãæ¶è²»ããŸã
- 詳现ãªäŸ¡æ Œèšå®ãšåã®å¶éã«ã€ããŠã¯ãGitHub ã®è«æ±ããã¥ã¡ã³ã ãåç §ããŠãã ãã
API ã³ã¹ã:
- å Claude ã€ã³ã¿ã©ã¯ã·ã§ã³ã¯ãããã³ãããšå¿çã®é·ãã«åºã¥ã㊠API ããŒã¯ã³ãæ¶è²»ããŸã
- ããŒã¯ã³äœ¿çšéã¯ãã¿ã¹ã¯ã®è€éããšã³ãŒãããŒã¹ã®ãµã€ãºã«ãã£ãŠç°ãªããŸã
- çŸåšã®ããŒã¯ã³ã¬ãŒãã«ã€ããŠã¯ãClaude ã®äŸ¡æ ŒããŒãž ãåç §ããŠãã ãã
ã³ã¹ãæé©åã®ãã³ã:
- ç¹å®ã®
@claudeã³ãã³ãã䜿çšããŠãäžèŠãª API åŒã³åºããæžãããŸã claude_argsã§é©åãª--max-turnsãèšå®ããŠãé床ãªå埩ãé²ããŸã- ã¯ãŒã¯ãããŒã¬ãã«ã®ã¿ã€ã ã¢ãŠããèšå®ããŠãæŽèµ°ãžã§ããåé¿ããŸã
- GitHub ã®äžŠè¡å¶åŸ¡ã䜿çšããŠã䞊åå®è¡ãå¶éããããšãæ€èšããŸã
èšå®äŸ
Claude Code Action v1 ã¯ãçµ±äžããããã©ã¡ãŒã¿ã§èšå®ãç°¡çŽ åããŸãã
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "Your instructions here" # Optional
claude_args: "--max-turns 5" # Optional CLI arguments
äž»ãªæ©èœïŒ
- çµ±äžãããããã³ããã€ã³ã¿ãŒãã§ãŒã¹ - ãã¹ãŠã®æç€ºã«
promptã䜿çšããŸã - Skills - ã€ã³ã¹ããŒã«æžã¿ã® skills ãããã³ããããçŽæ¥åŒã³åºããŸã
- CLI ãã¹ã¹ã«ãŒ -
claude_argsçµç±ã®ä»»æã® Claude Code CLI åŒæ° - æè»ãªããªã¬ãŒ - ä»»æã® GitHub ã€ãã³ãã§åäœããŸã
å®å šãªã¯ãŒã¯ãããŒãã¡ã€ã«ã«ã€ããŠã¯ãexamples ãã£ã¬ã¯ã㪠ãåç §ããŠãã ããã
ã€ã·ã¥ãŒãŸã㯠PR ã³ã¡ã³ãã«å¿çããå ŽåãClaude ã¯èªåçã« @claude ã¡ã³ã·ã§ã³ã«å¿çããŸãããã®ä»ã®ã€ãã³ãã«ã€ããŠã¯ãprompt ãã©ã¡ãŒã¿ã䜿çšããŠæç€ºãæäŸããŸãã
Amazon Bedrock ãš Google Vertex AI ã§ã®äœ¿çš
ãšã³ã¿ãŒãã©ã€ãºç°å¢ã§ã¯ãClaude Code GitHub Actions ãç¬èªã®ã¯ã©ãŠãã€ã³ãã©ã¹ãã©ã¯ãã£ã§äœ¿çšã§ããŸãããã®ã¢ãããŒãã«ãããããŒã¿ã¬ãžãã³ã·ãŒãšè«æ±ãå¶åŸ¡ããªãããåãæ©èœãç¶æã§ããŸãã
åææ¡ä»¶
ã¯ã©ãŠããããã€ããŒã§ Claude Code GitHub Actions ãã»ããã¢ããããåã«ã以äžãå¿ èŠã§ãã
Google Cloud Vertex AI ã®å ŽåïŒ
- Vertex AI ãæå¹ãª Google Cloud ãããžã§ã¯ã
- GitHub Actions çšã«èšå®ããã Workload Identity Federation
- å¿ èŠãªã¢ã¯ã»ã¹èš±å¯ãæã€ãµãŒãã¹ã¢ã«ãŠã³ã
- GitHub AppïŒæšå¥šïŒãŸã㯠ããã©ã«ãã® GITHUB_TOKEN ã䜿çš
Amazon Bedrock ã®å ŽåïŒ
- Amazon Bedrock ãæå¹ãª AWS ã¢ã«ãŠã³ã
- AWS ã§èšå®ããã GitHub OIDC Identity Provider
- Bedrock ã¢ã¯ã»ã¹èš±å¯ãæã€ IAM ããŒã«
- GitHub AppïŒæšå¥šïŒãŸã㯠ããã©ã«ãã® GITHUB_TOKEN ã䜿çš
ã«ã¹ã¿ã GitHub App ãäœæïŒ3P ãããã€ããŒã«æšå¥šïŒ
Vertex AI ã Bedrock ãªã©ã® 3P ãããã€ããŒã䜿çšããå Žåãæé©ãªå¶åŸ¡ãšã»ãã¥ãªãã£ã®ããã«ãç¬èªã® GitHub App ãäœæããããšããå§ãããŸãã
- https://github.com/settings/apps/new ã«ã¢ã¯ã»ã¹ããŸã
- åºæ¬æ å ±ãå ¥åããŸãã
- GitHub App name: äžæã®ååãéžæããŸãïŒäŸïŒ'YourOrg Claude Assistant'ïŒ
- Homepage URL: çµç¹ã® Web ãµã€ããŸãã¯ãªããžã㪠URL
- ã¢ããªèšå®ãèšå®ããŸãã
- Webhooks: 'Active'ããªãã«ããŸãïŒãã®çµ±åã«ã¯äžèŠïŒ
- å¿ èŠãªã¢ã¯ã»ã¹èš±å¯ãèšå®ããŸãã
- Repository permissions:
- Contents: Read & Write
- Issues: Read & Write
- Pull requests: Read & Write
- 'Create GitHub App'ãã¯ãªãã¯ããŸã
- äœæåŸã'Generate a private key'ãã¯ãªãã¯ããŠããŠã³ããŒããã
.pemãã¡ã€ã«ãä¿åããŸã - ã¢ããªèšå®ããŒãžããã¢ã㪠ID ãã¡ã¢ããŸã
- ã¢ããªããªããžããªã«ã€ã³ã¹ããŒã«ããŸãã
- ã¢ããªã®èšå®ããŒãžãããå·ŠåŽã®ãµã€ãããŒã®'Install App'ãã¯ãªãã¯ããŸã
- ã¢ã«ãŠã³ããŸãã¯çµç¹ãéžæããŸã
- 'Only select repositories'ãéžæããŠãç¹å®ã®ãªããžããªãéžæããŸã
- 'Install'ãã¯ãªãã¯ããŸã
- ãã©ã€ããŒãããŒããªããžããªã·ãŒã¯ã¬ãããšããŠè¿œå ããŸãã
- ãªããžããªã® Settings â Secrets and variables â Actions ã«ç§»åããŸã
.pemãã¡ã€ã«ã®å 容ãå«ãAPP_PRIVATE_KEYãšããååã®æ°ããã·ãŒã¯ã¬ãããäœæããŸã
- ã¢ã㪠ID ãã·ãŒã¯ã¬ãããšããŠè¿œå ããŸãã
- GitHub App ã® ID ãå«ã
APP_IDãšããååã®æ°ããã·ãŒã¯ã¬ãããäœæããŸã
ãã®ã¢ããªã¯ actions/create-github-app-token ã¢ã¯ã·ã§ã³ã§äœ¿çšãããã¯ãŒã¯ãããŒå ã§èªèšŒããŒã¯ã³ãçæããŸãã
Claude API ã®å ŽåããŸãã¯ç¬èªã® Github ã¢ããªãã»ããã¢ããããããªãå Žåã®ä»£æ¿æ¡: å ¬åŒ Anthropic ã¢ããªã䜿çšããŸãã
- https://github.com/apps/claude ããã€ã³ã¹ããŒã«ããŸã
- èªèšŒã«è¿œå ã®èšå®ã¯äžèŠã§ã
ã¯ã©ãŠããããã€ããŒèªèšŒãèšå®
ã¯ã©ãŠããããã€ããŒãéžæããå®å šãªèªèšŒãã»ããã¢ããããŸãã
ã»ãã¥ãªãã£ã«é¢ããæ³šæ: ãªããžããªåºæã®èšå®ã䜿çšããæå°éã®å¿ èŠãªã¢ã¯ã»ã¹èš±å¯ã®ã¿ãä»äžããŸãã
å¿ èŠãªã»ããã¢ãã:
- Amazon Bedrock ãæå¹ã«ããŸã:
- Amazon Bedrock ã§ Claude ã¢ãã«ãžã®ã¢ã¯ã»ã¹ããªã¯ãšã¹ãããŸã
- ã¯ãã¹ãªãŒãžã§ã³ã¢ãã«ã®å Žåããã¹ãŠã®å¿ èŠãªãªãŒãžã§ã³ã§ã¢ã¯ã»ã¹ããªã¯ãšã¹ãããŸã
- GitHub OIDC Identity Provider ãã»ããã¢ããããŸã:
- Provider URL:
https://token.actions.githubusercontent.com - Audience:
sts.amazonaws.com
- GitHub Actions çšã® IAM ããŒã«ãäœæããŸã:
- Trusted entity type: Web identity
- Identity provider:
token.actions.githubusercontent.com - Permissions:
AmazonBedrockFullAccessããªã·ãŒ - ç¹å®ã®ãªããžããªã®ä¿¡é Œããªã·ãŒãèšå®ããŸã
å¿ èŠãªå€:
ã»ããã¢ããåŸã以äžãå¿ èŠã§ãã
- AWS_ROLE_TO_ASSUME: äœæãã IAM ããŒã«ã® ARN
OIDC ã¯ãèªèšŒæ å ±ãäžæçã§èªåçã«ããŒããŒã·ã§ã³ããããããéç㪠AWS ã¢ã¯ã»ã¹ããŒã䜿çšãããããå®å šã§ãã
詳现㪠OIDC ã»ããã¢ããæé ã«ã€ããŠã¯ãAWS ããã¥ã¡ã³ã ãåç §ããŠãã ããã </Accordion>
Google Vertex AI
GitHub Actions ãèªèšŒæ å ±ãä¿åããã«å®å šã«èªèšŒã§ããããã« Google Cloud ãèšå®ããŸãã
ã»ãã¥ãªãã£ã«é¢ããæ³šæ: ãªããžããªåºæã®èšå®ã䜿çšããæå°éã®å¿ èŠãªã¢ã¯ã»ã¹èš±å¯ã®ã¿ãä»äžããŸãã
å¿ èŠãªã»ããã¢ãã:
- Google Cloud ãããžã§ã¯ãã§ API ãæå¹ã«ããŸã:
- IAM Credentials API
- Security Token ServiceïŒSTSïŒAPI
- Vertex AI API
- Workload Identity Federation ãªãœãŒã¹ãäœæããŸã:
- Workload Identity Pool ãäœæããŸã
- GitHub OIDC ãããã€ããŒã远å ããŸãã
- Issuer:
https://token.actions.githubusercontent.com - ãªããžããªãšææè ã®å±æ§ãããã³ã°
- ã»ãã¥ãªãã£æšå¥š: ãªããžããªåºæã®å±æ§æ¡ä»¶ã䜿çšããŸã
- ãµãŒãã¹ã¢ã«ãŠã³ããäœæããŸã:
Vertex AI UserããŒã«ã®ã¿ãä»äžããŸã- ã»ãã¥ãªãã£æšå¥š: ãªããžããªããšã«å°çšã®ãµãŒãã¹ã¢ã«ãŠã³ããäœæããŸã
- IAM ãã€ã³ãã£ã³ã°ãèšå®ããŸã:
- Workload Identity Pool ããµãŒãã¹ã¢ã«ãŠã³ããåœè£ ã§ããããã«ããŸã
- ã»ãã¥ãªãã£æšå¥š: ãªããžããªåºæã®ããªã³ã·ãã«ã»ããã䜿çšããŸã
å¿ èŠãªå€:
ã»ããã¢ããåŸã以äžãå¿ èŠã§ãã
- GCP_WORKLOAD_IDENTITY_PROVIDER: å®å šãªãããã€ããŒãªãœãŒã¹å
- GCP_SERVICE_ACCOUNT: ãµãŒãã¹ã¢ã«ãŠã³ãã®ã¡ãŒã«ã¢ãã¬ã¹
Workload Identity Federation ã«ãããããŠã³ããŒãå¯èœãªãµãŒãã¹ã¢ã«ãŠã³ãããŒãäžèŠã«ãªããã»ãã¥ãªãã£ãåäžããŸãã
詳现ãªã»ããã¢ããæé ã«ã€ããŠã¯ãGoogle Cloud Workload Identity Federation ããã¥ã¡ã³ã ãåç §ããŠãã ããã
å¿ èŠãªã·ãŒã¯ã¬ããã远å
ãªããžããªã«ä»¥äžã®ã·ãŒã¯ã¬ããã远å ããŸãïŒSettings â Secrets and variables â ActionsïŒ:
Claude APIïŒçŽæ¥ïŒã®å ŽåïŒ
- API èªèšŒã®å Žå:
ANTHROPIC_API_KEY: console.anthropic.com ããã® Claude API ããŒ
- GitHub App ã䜿çšããå ŽåïŒç¬èªã®ã¢ããªã䜿çšããŠããå ŽåïŒ:
APP_ID: GitHub App ã® IDAPP_PRIVATE_KEY: ãã©ã€ããŒãããŒïŒ.pemïŒã®å 容
Google Cloud Vertex AI ã®å Žå
- GCP èªèšŒã®å Žå:
GCP_WORKLOAD_IDENTITY_PROVIDERGCP_SERVICE_ACCOUNT
- GitHub App ã䜿çšããå ŽåïŒç¬èªã®ã¢ããªã䜿çšããŠããå ŽåïŒ:
APP_ID: GitHub App ã® IDAPP_PRIVATE_KEY: ãã©ã€ããŒãããŒïŒ.pemïŒã®å 容
AWS Bedrock ã®å Žå
- AWS èªèšŒã®å Žå:
AWS_ROLE_TO_ASSUME
- GitHub App ã䜿çšããå ŽåïŒç¬èªã®ã¢ããªã䜿çšããŠããå ŽåïŒ:
APP_ID: GitHub App ã® IDAPP_PRIVATE_KEY: ãã©ã€ããŒãããŒïŒ.pemïŒã®å 容
ã¯ãŒã¯ãããŒãã¡ã€ã«ãäœæ
ã¯ã©ãŠããããã€ããŒãšçµ±åãã GitHub Actions ã¯ãŒã¯ãããŒãã¡ã€ã«ãäœæããŸãã以äžã®äŸã¯ãAWS Bedrock ãš Google Vertex AI ã®äž¡æ¹ã®å®å šãªèšå®ã瀺ããŠããŸãã
- AWS Bedrock ã¢ã¯ã»ã¹ãæå¹ã§ãClaude ã¢ãã«ã®ã¢ã¯ã»ã¹èš±å¯ããã
- GitHub ã AWS ã§ OIDC ID ãããã€ããŒãšããŠèšå®ãããŠãã
- Bedrock ã¢ã¯ã»ã¹èš±å¯ãæã€ IAM ããŒã«ã GitHub Actions ãä¿¡é ŒããŠãã
å¿ èŠãª GitHub ã·ãŒã¯ã¬ãã:
| Secret Name | Description |
|---|---|
AWS_ROLE_TO_ASSUME |
Bedrock ã¢ã¯ã»ã¹çšã® IAM ããŒã«ã® ARN |
APP_ID |
GitHub App IDïŒã¢ããªèšå®ããïŒ |
APP_PRIVATE_KEY |
GitHub App çšã«çæãããã©ã€ããŒãã㌠|
name: Claude PR Action
permissions:
contents: write
pull-requests: write
issues: write
id-token: write
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened, assigned]
jobs:
claude-pr:
if: |
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))
runs-on: ubuntu-latest
env:
AWS_REGION: us-west-2
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Generate GitHub App token
id: app-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Configure AWS Credentials (OIDC)
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
aws-region: us-west-2
- uses: anthropics/claude-code-action@v1
with:
github_token: ${{ steps.app-token.outputs.token }}
use_bedrock: "true"
claude_args: '--model us.anthropic.claude-sonnet-4-6 --max-turns 10'
Bedrock ã®ã¢ãã« ID 圢åŒã«ã¯ããªãŒãžã§ã³ãã¬ãã£ãã¯ã¹ãå«ãŸããŸãïŒäŸïŒus.anthropic.claude-sonnet-4-6ïŒã
Google Vertex AI ã¯ãŒã¯ãããŒ
åææ¡ä»¶:
- GCP ãããžã§ã¯ãã§ Vertex AI API ãæå¹
- GitHub çšã« Workload Identity Federation ãèšå®ãããŠãã
- Vertex AI ã¢ã¯ã»ã¹èš±å¯ãæã€ãµãŒãã¹ã¢ã«ãŠã³ã
å¿ èŠãª GitHub ã·ãŒã¯ã¬ãã:
| Secret Name | Description |
|---|---|
GCP_WORKLOAD_IDENTITY_PROVIDER |
Workload identity provider ãªãœãŒã¹å |
GCP_SERVICE_ACCOUNT |
Vertex AI ã¢ã¯ã»ã¹æš©ãæã€ãµãŒãã¹ã¢ã«ãŠã³ãã¡ãŒã« |
APP_ID |
GitHub App IDïŒã¢ããªèšå®ããïŒ |
APP_PRIVATE_KEY |
GitHub App çšã«çæãããã©ã€ããŒãã㌠|
name: Claude PR Action
permissions:
contents: write
pull-requests: write
issues: write
id-token: write
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened, assigned]
jobs:
claude-pr:
if: |
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'issues' && contains(github.event.issue.body, '@claude'))
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Generate GitHub App token
id: app-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Authenticate to Google Cloud
id: auth
uses: google-github-actions/auth@v2
with:
workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY_PROVIDER }}
service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}
- uses: anthropics/claude-code-action@v1
with:
github_token: ${{ steps.app-token.outputs.token }}
trigger_phrase: "@claude"
use_vertex: "true"
claude_args: '--model claude-sonnet-4-5@20250929 --max-turns 10'
env:
ANTHROPIC_VERTEX_PROJECT_ID: ${{ steps.auth.outputs.project_id }}
CLOUD_ML_REGION: us-east5
VERTEX_REGION_CLAUDE_4_5_SONNET: us-east5
ãããžã§ã¯ã ID 㯠Google Cloud èªèšŒã¹ãããããèªåçã«ååŸããããããããŒãã³ãŒãããå¿ èŠã¯ãããŸããã
ãã©ãã«ã·ã¥ãŒãã£ã³ã°
Claude ã @claude ã³ãã³ãã«å¿çããªã
GitHub App ãæ£ããã€ã³ã¹ããŒã«ãããŠããããšã確èªããã¯ãŒã¯ãããŒãæå¹ã«ãªã£ãŠããããšã確èªããAPI ããŒããªããžããªã·ãŒã¯ã¬ããã«èšå®ãããŠããããšã確èªããã³ã¡ã³ãã« @claude ãå«ãŸããŠããããšã確èªããŸãïŒ/claude ã§ã¯ãªãïŒã
CI ã Claude ã®ã³ãããã§å®è¡ãããªã
GitHub App ãŸãã¯ã«ã¹ã¿ã ã¢ããªã䜿çšããŠããããšã確èªããŸãïŒActions ãŠãŒã¶ãŒã§ã¯ãªãïŒãã¯ãŒã¯ãããŒããªã¬ãŒã«å¿ èŠãªã€ãã³ããå«ãŸããŠããããšã確èªããã¢ããªã®ã¢ã¯ã»ã¹èš±å¯ã« CI ããªã¬ãŒãå«ãŸããŠããããšã確èªããŸãã
èªèšŒãšã©ãŒ
API ããŒãæå¹ã§ååãªã¢ã¯ã»ã¹èš±å¯ãããããšã確èªããŸããBedrock/Vertex ã®å ŽåãèªèšŒæ å ±ã®èšå®ã確èªããã·ãŒã¯ã¬ãããã¯ãŒã¯ãããŒå ã§æ£ããååä»ããããŠããããšã確èªããŸãã
é«åºŠãªèšå®
ã¢ã¯ã·ã§ã³ãã©ã¡ãŒã¿
Claude Code Action v1 ã¯ãç°¡çŽ åãããèšå®ã䜿çšããŸãã
| Parameter | Description | Required |
|---|---|---|
prompt |
Claude ã®æç€ºïŒãã¬ãŒã³ããã¹ããŸã㯠skill åïŒ | No* |
claude_args |
Claude Code ã«æž¡ããã CLI åŒæ° | No |
anthropic_api_key |
Claude API ã㌠| Yes** |
github_token |
API ã¢ã¯ã»ã¹çšã® GitHub ããŒã¯ã³ | No |
trigger_phrase |
ã«ã¹ã¿ã ããªã¬ãŒãã¬ãŒãºïŒããã©ã«ãïŒã@claudeãïŒ | No |
use_bedrock |
Claude API ã®ä»£ããã« AWS Bedrock ãäœ¿çš | No |
use_vertex |
Claude API ã®ä»£ããã« Google Vertex AI ãäœ¿çš | No |
*ããã³ããã¯ãªãã·ã§ã³ã§ããã€ã·ã¥ãŒ/PR ã³ã¡ã³ãã§çç¥ãããå ŽåãClaude ã¯ããªã¬ãŒãã¬ãŒãºã«å¿çããŸã
**çŽæ¥ Claude API ã«å¿
èŠã§ããBedrock/Vertex ã«ã¯äžèŠã§ã
CLI åŒæ°ãæž¡ã
claude_args ãã©ã¡ãŒã¿ã¯ãä»»æã® Claude Code CLI åŒæ°ãåãå
¥ããŸãã
claude_args: "--max-turns 5 --model claude-sonnet-4-6 --mcp-config /path/to/config.json"
äžè¬çãªåŒæ°ïŒ
--max-turns: æå€§äŒè©±ã¿ãŒã³æ°ïŒããã©ã«ãïŒ10ïŒ--model: 䜿çšããã¢ãã«ïŒäŸïŒclaude-sonnet-4-6ïŒ--mcp-config: MCP èšå®ãžã®ãã¹--allowedTools: èš±å¯ãããããŒã«ã®ã«ã³ãåºåããªã¹ãã--allowed-toolsãšã€ãªã¢ã¹ãæ©èœããŸãã--debug: ãããã°åºåãæå¹ã«ããŸã
代æ¿çµ±åæ¹æ³
/install-github-app ã³ãã³ãã¯æšå¥šãããã¢ãããŒãã§ããã以äžãå®è¡ã§ããŸãã
- ã«ã¹ã¿ã GitHub App: ãã©ã³ãåããããŠãŒã¶ãŒåãŸãã¯ã«ã¹ã¿ã èªèšŒãããŒãå¿ èŠãªçµç¹åããå¿ èŠãªã¢ã¯ã»ã¹èš±å¯ïŒcontentsãissuesãpull requestsïŒãæã€ç¬èªã® GitHub App ãäœæããactions/create-github-app-token ã¢ã¯ã·ã§ã³ã䜿çšããŠã¯ãŒã¯ãããŒå ã§ããŒã¯ã³ãçæããŸãã
- æå GitHub Actions: æå€§ã®æè»æ§ã®ããã®çŽæ¥ã¯ãŒã¯ãããŒèšå®
- MCP èšå®: Model Context Protocol ãµãŒããŒã®åçèªã¿èŸŒã¿
詳现ãªã¬ã€ãã«ã€ããŠã¯ãClaude Code Action ããã¥ã¡ã³ã ãåç §ããŠãã ãããèªèšŒãã»ãã¥ãªãã£ãé«åºŠãªèšå®ã«é¢ãã詳现ãªã¬ã€ãããããŸãã
Claude ã®åäœãã«ã¹ã¿ãã€ãº
Claude ã®åäœã¯ 2 ã€ã®æ¹æ³ã§èšå®ã§ããŸãã
- CLAUDE.md: ãªããžããªã®ã«ãŒãã«
CLAUDE.mdãã¡ã€ã«ãäœæããŠãã³ãŒãã£ã³ã°æšæºãã¬ãã¥ãŒåºæºããããžã§ã¯ãåºæã®ã«ãŒã«ãå®çŸ©ããŸããClaude 㯠PR ãäœæãããªã¯ãšã¹ãã«å¿çãããšãã«ãããã®ã¬ã€ãã©ã€ã³ã«åŸããŸãã詳现ã«ã€ããŠã¯ãMemory ããã¥ã¡ã³ã ã確èªããŠãã ããã - ã«ã¹ã¿ã ããã³ãã: ã¯ãŒã¯ãããŒãã¡ã€ã«ã®
promptãã©ã¡ãŒã¿ã䜿çšããŠãã¯ãŒã¯ãããŒåºæã®æç€ºãæäŸããŸããããã«ãããç°ãªãã¯ãŒã¯ãããŒãŸãã¯ã¿ã¹ã¯çšã« Claude ã®åäœãã«ã¹ã¿ãã€ãºã§ããŸãã
Claude 㯠PR ãäœæãããªã¯ãšã¹ãã«å¿çãããšãã«ãããã®ã¬ã€ãã©ã€ã³ã«åŸããŸãã