תיעוד 38
שימוש ב-Claude Code GitHub Actions עם ספקי ענן
הרצת Claude Code GitHub Actions דרך Amazon Bedrock, Agent Platform של Google Cloud, או Microsoft Foundry במקום Claude API
Claude Code GitHub Actions קורא ל-Claude API כברירת מחדל. כדי לנתב את ההסקה דרך חשבון הענן שלכם, הגדירו את קלט הספק של Claude Code GitHub Action והגדירו את הענן כך שיסמוך על אסימון OpenID Connect (OIDC) של ה-workflow. ה-workflow מאמת עם האסימון הזה, ולכן אינכם שומרים אישור ענן ארוך טווח במאגר.
[!NOTE]
הדף הזה נשען על הגדרת GitHub Actions. הוא מניח שאתם כבר מכירים את קובץ ה-workflow ואת שלב
anthropics/claude-code-action, ומכסה רק את מה שספק ענן משנה.
#בחירת הספק
Claude Code GitHub Action תומך בשלושה ספקים, ושלבי ההגדרה למטה נבדלים רק בהגדרה בצד הענן. השתמשו בספק שבו לארגון שלכם כבר יש גישה למודלי Claude. אתם אומרים ל-Claude Code GitHub Action באיזה ספק להשתמש באמצעות קלט אחד בבלוק with: של שלב anthropics/claude-code-action:
- Amazon Bedrock:
use_bedrock: "true" - Agent Platform של Google Cloud:
use_vertex: "true" - Microsoft Foundry:
use_foundry: "true"
דוגמאות ה-workflow המלאות תחת הגדרת האינטגרציה כבר כוללות את הקלט לכל ספק.
#דרישות מקדימות
לפני שמתחילים, צריך:
- גישת מנהל למאגר שבו רץ Claude Code GitHub Action, כדי להתקין GitHub App ולהוסיף סודות
- הרשאה ליצור משאבי זהות בחשבון הענן: תפקידי IAM וספקי זהות OIDC ב-AWS, משאבי Workload Identity Federation וחשבונות שירות ב-Google Cloud, או יישומי Microsoft Entra ב-Azure
- גישה למודלי Claude אצל הספק:
- Amazon Bedrock: גישה שניתנה למודלי Claude. פרופילי הסקה בין אזורים, כמו מזהי המודל
us.בדוגמאות בדף הזה, דורשים גישה שניתנה בכל אזור בקבוצת האזורים שלהם. ראו Claude Code ב-Amazon Bedrock - Agent Platform של Google Cloud: פרויקט עם Agent Platform API מופעל וגישה למודלי Claude. ראו Claude Code ב-Agent Platform של Google Cloud
- Microsoft Foundry: משאב Foundry עם פריסת מודל Claude. ראו Claude Code ב-Microsoft Foundry
- Amazon Bedrock: גישה שניתנה למודלי Claude. פרופילי הסקה בין אזורים, כמו מזהי המודל
#הגדרת האינטגרציה
מעבר לדרישות המקדימות, יוצרים זהות GitHub עבור Claude Code GitHub Action, את הגדרת האמון בצד הענן, את סודות המאגר, ואת קובץ ה-workflow. השלבים למטה עוברים על כל אחד.
1. בחירת זהות GitHub
Claude Code GitHub Action דוחף commits ומפרסם תגובות דרך זהות GitHub. ההגדרה המהירה מתקינה את Claude GitHub App הרשמי לשם כך. עם ספק ענן, אתם בוחרים את הזהות בעצמכם:
- Claude GitHub App הרשמי: התקינו אותו על המאגר, או דלגו לשלב הבא אם הוא כבר מותקן
- GitHub App מותאם: צרו אפליקציה משלכם כשאתם רוצים רק את שלוש ההרשאות ש-Claude Code GitHub Action משתמש בהן, במקום הסט המלא של האפליקציה הרשמית
GITHUB_TOKENהאוטומטי של GitHub: אין אפליקציה ליצור או להתקין, אבל GitHub לא מפעיל את תהליכי ה-CI שלכם על commits שנעשו איתו
דוגמאות ה-workflow בשלב הרביעי מאמתות עם אפליקציה מותאמת. השלב הזה גם אומר מה לשנות עבור שתי האפשרויות האחרות.
כדי ליצור אפליקציה מותאמת, רשמו GitHub App חדש עם webhooks כבויים, כי האינטגרציה הזו לא משתמשת בהם. העניקו לה שלוש הרשאות מאגר:
- Contents: קריאה וכתיבה
- Issues: קריאה וכתיבה
- Pull requests: קריאה וכתיבה
אחרי רישום האפליקציה, צרו מפתח פרטי ושמרו את קובץ .pem שהורד, רשמו את App ID מדף ההגדרות של האפליקציה, והתקינו את האפליקציה על המאגר שבו רץ Claude Code GitHub Action. אתם מוסיפים את המפתח ואת ה-ID כסודות בשלב השלישי.
2. הגדרת אימות ענן
הגדירו את הענן כך שיסמוך על אסימון ה-OIDC ש-GitHub מנפיק ל-workflow, כדי שכל הרצת workflow תקבל אישורי ענן קצרי טווח. התבליטים בכל לשונית מסכמים מה ליצור, וכל לשונית מקשרת למדריך של ספק הענן עצמו לשלבי הקונסולה.
Amazon Bedrock
צרו את הגדרת האמון בחשבון AWS שלכם, לפי מדריך AWS ליצירת ספקי זהות OIDC:
- הוסיפו ספק זהות OIDC של GitHub עם כתובת ספק
https://token.actions.githubusercontent.comוקהלsts.amazonaws.com - צרו תפקיד IAM שהספק הזה סומך עליו כזהות web, וצרפו את מדיניות ההפעלה המצומצמת מהגדרת IAM, שמעניקה
bedrock:InvokeModel,bedrock:InvokeModelWithResponseStream,bedrock:ListInferenceProfiles, ו-bedrock:GetInferenceProfile, יחד עם שתי פעולות מנויaws-marketplace - הגבילו את מדיניות האמון של התפקיד למאגר שלכם עם תנאי subject כמו
repo:your-org/your-repo:*. ראו מדריך הקשחת OIDC של GitHub לפורמט ה-claim
רשמו את ה-ARN של התפקיד. אתם מוסיפים אותו כסוד בשלב הבא.
Agent Platform של Google Cloud
צרו את משאבי ה-federation בפרויקט Google Cloud שלכם, לפי תיעוד Workload Identity Federation:
- הפעילו שלושה API: IAM Credentials, Security Token Service (STS), ו-Agent Platform API, ששם השירות שלו הוא
aiplatform.googleapis.com - צרו Workload Identity Pool עם ספק OIDC של GitHub שה-issuer שלו הוא
https://token.actions.githubusercontent.com, והוסיפו תנאי attribute שמגביל את ה-pool למאגר שלכם - צרו חשבון שירות ייעודי עם תפקיד
Vertex AI Userבלבד, שהואroles/aiplatform.user, ואפשרו ל-pool להתחזות אליו
רשמו את שם המשאב המלא של הספק ואת כתובת הדוא"ל של חשבון השירות. אתם מוסיפים אותם כסודות בשלב הבא.
Microsoft Foundry
צרו יישום Microsoft Entra עם אישור federated למאגר שלכם, לפי מדריך Microsoft לאימות מ-GitHub Actions:
- רשמו יישום Microsoft Entra והוסיפו אישור זהות federated שסומך על אסימונים ש-GitHub מנפיק למאגר שלכם. זהות מנוהלת שהוקצתה למשתמש עובדת במקום יישום. לשניהם יש את ה-client ID שאתם רושמים למטה
- הקצו ליישום את התפקיד
Azure AI Userעל משאב ה-Foundry שלכם. ראו הגדרת Azure RBAC לתפקיד מותאם צר יותר
רשמו את ה-client ID של היישום, את ה-tenant ID שלכם, ואת ה-subscription ID שלכם. אתם מוסיפים אותם כסודות בשלב הבא.
3. הוספת סודות מאגר
במאגר שבו רץ Claude Code GitHub Action, הוסיפו את הסודות של הספק שלכם, ועוד שני סודות האפליקציה אם יצרתם GitHub App מותאם בשלב הראשון. ראו את מדריך GitHub לשימוש בסודות ב-GitHub Actions.
| סוד | נדרש עבור | ערך |
|---|---|---|
AWS_ROLE_TO_ASSUME | Amazon Bedrock | ה-ARN של תפקיד ה-IAM |
GCP_WORKLOAD_IDENTITY_PROVIDER | Agent Platform של Google Cloud | שם המשאב המלא של הספק |
GCP_SERVICE_ACCOUNT | Agent Platform של Google Cloud | כתובת הדוא"ל של חשבון השירות |
AZURE_CLIENT_ID | Microsoft Foundry | ה-client ID של יישום Entra |
AZURE_TENANT_ID | Microsoft Foundry | ה-tenant ID של Microsoft Entra שלכם |
AZURE_SUBSCRIPTION_ID | Microsoft Foundry | ה-subscription ID של Azure שלכם |
APP_ID | GitHub App מותאם | ה-ID של GitHub App |
APP_PRIVATE_KEY | GitHub App מותאם | התוכן של קובץ המפתח הפרטי .pem |
4. יצירת קובץ ה-workflow
צרו קובץ workflow עבור הספק שלכם, למשל .github/workflows/claude.yml. כל דוגמה מגיבה לאזכורי @claude, מאמתת מול GitHub עם אפליקציה מותאמת, וכוללת את ההרשאה id-token: write, ש-GitHub דורש כדי להנפיק את אסימון ה-OIDC שספק הענן שלכם מחליף באישורים.
אם בחרתם זהות GitHub אחרת בשלב הראשון, התאימו את הדוגמה:
- Claude GitHub App הרשמי: מחקו את שלב Generate GitHub App token ואת שורת
github_token - האסימון האוטומטי של GitHub: מחקו את שלב יצירת האסימון ושנו את שורת
github_tokenל-github_token: ${{ secrets.GITHUB_TOKEN }}
[!WARNING]
במאגרים ציבוריים, תגובה שמכילה את ביטוי ההפעלה מכל משתמש מתחילה את ה-workflow הזה. שלבי האישורים רצים לפני ש-Claude Code GitHub Action בודק את גישת הכתיבה של כותב התגובה, ולכן הפעולה דוחה משתמשים לא מורשים רק אחרי שה-workflow יצר אסימון App והתחבר לספק הענן שלכם, מה שמשאיר רשומות ביומן ביקורת וצורך דקות Actions. כדי להימנע מהרצות האלה, הוסיפו שלב שמאמת את גישת הכתיבה של כותב התגובה לפני שלבי האישורים.
Amazon Bedrock
החליפו את ערך aws-region בערך שלכם. שלב האישורים מייצא אותו כ-AWS_REGION לשאר ה-job.
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]
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') || contains(github.event.issue.title, '@claude')))
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
- 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'[!TIP]
מזהי מודל של Bedrock כוללים קידומת של פרופיל הסקה בין אזורים כמו
us.. השתמשו בקידומת של קבוצת האזורים שבה הענקתם גישה למודל.
Agent Platform של Google Cloud
החליפו את ערך CLOUD_ML_REGION בערך שלכם. אין צורך לקבע בקוד את מזהה הפרויקט, כי ה-workflow קורא אותו מפלט שלב auth.
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]
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') || contains(github.event.issue.title, '@claude')))
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
- 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 }}
use_vertex: "true"
claude_args: '--model claude-sonnet-5'
env:
ANTHROPIC_VERTEX_PROJECT_ID: ${{ steps.auth.outputs.project_id }}
CLOUD_ML_REGION: us-east5Microsoft Foundry
החליפו את your-resource-name בשם משאב ה-Foundry שלכם. Claude Code בונה ממנו את כתובת ה-endpoint. שלב azure/login מתחבר עם אסימון ה-OIDC של ה-workflow, ו-Claude Code קולט את האישורים דרך שרשרת ברירת המחדל של האישורים של Azure.
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]
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') || contains(github.event.issue.title, '@claude')))
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
- 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 Azure
uses: azure/login@v2
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- uses: anthropics/claude-code-action@v1
with:
github_token: ${{ steps.app-token.outputs.token }}
use_foundry: "true"
claude_args: '--model claude-sonnet-5'
env:
ANTHROPIC_FOUNDRY_RESOURCE: your-resource-name[!TIP]
השתמשו במזהה מודל שתואם לפריסת Claude במשאב ה-Foundry שלכם. ראו Claude Code ב-Microsoft Foundry להגדרת מודל ולנעיצת גרסה.
עם כל ספק, אפשר להגביל את אורך ההרצה ואת העלות על ידי הוספת --max-turns ל-claude_args. ראו ניהול עלויות.
5. בדיקת ההגדרה
אזכרו @claude ב-issue או בתגובת PR, ואז עקבו אחרי ההרצה בלשונית Actions של המאגר. Claude משיב בתגובה על אותו issue או PR.
#פתרון בעיות
הרצה שנכשלת בדרך כלל נשברת באחד משני מקומות:
- שגיאות אימות: בדרך כלל הגדרת OIDC שגויה. בדקו שה-workflow כולל את ההרשאה
id-token: write, שתנאי המאגר בהגדרת האמון תואם את המאגר שלכם בדיוק, וששמות הסודות ב-workflow תואמים לאלה שהוספתם - בעיות הפעלה ו-CI: אלה מתנהגות כמו כש-Claude Code GitHub Action קורא ל-Claude API. ראו את סעיף פתרון הבעיות בדף הראשי ואת ה-FAQ של Claude Code GitHub Action
#מה הלאה
- Claude Code GitHub Actions לדוגמאות, פרמטרים, ושיטות עבודה מומלצות
- Claude Code ב-Amazon Bedrock למזהי מודל ואזורים של Bedrock
- Claude Code ב-Agent Platform של Google Cloud למזהי מודל ואזורים של Agent Platform
- Claude Code ב-Microsoft Foundry להגדרת מודל ו-endpoint של Foundry