תיעוד 31
שימוש ב-Claude Code GitHub Actions עם ספקי ענן
הרצת Claude Code GitHub Actions דרך Amazon Bedrock, Google Cloud's Agent Platform, או Microsoft Foundry במקום דרך ה-API של Claude
Claude Code GitHub Actions קורא ל-API של Claude כברירת מחדל. כדי לנתב את ה-inference דרך חשבון הענן שלך במקום זאת, הגדר את קלט הספק (provider) של ה-Claude Code GitHub Action והגדר את הענן שלך לתת אמון בטוקן ה-OpenID Connect (OIDC) של ה-workflow. ה-workflow מבצע אימות באמצעות הטוקן הזה, כך שאינך שומר פרטי גישה ארוכי טווח לענן במאגר שלך.
דף זה מתבסס על הגדרת 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" - Google Cloud's Agent Platform:
use_vertex: "true" - Microsoft Foundry:
use_foundry: "true"
דוגמאות ה-workflow המלאות תחת הגדרת האינטגרציה כבר כוללות את הקלט עבור כל ספק.
#דרישות מוקדמות
לפני שתתחיל, אתה זקוק ל:
- גישת ניהול (Admin) למאגר שבו ה-Claude Code GitHub Action רץ, כדי להתקין GitHub App ולהוסיף סודות (secrets)
- הרשאה ליצור משאבי זהות בחשבון הענן שלך: תפקידי IAM וספקי זהות OIDC ב-AWS, משאבי Workload Identity Federation וחשבונות שירות (service accounts) ב-Google Cloud, או אפליקציות Microsoft Entra ב-Azure
- גישה למודלי Claude אצל הספק שלך:
- Amazon Bedrock: גישה מאושרת למודלי Claude. פרופילי cross-region inference, כגון מזהי המודלים שמתחילים ב-
us.בדוגמאות שבדף זה, דורשים הרשאת גישה בכל אזור בקבוצת האזורים שלהם. ראה Claude Code ב-Amazon Bedrock - Google Cloud's Agent Platform: פרויקט שבו ה-Agent Platform API מופעל וקיימת גישה למודלי Claude. ראה Claude Code ב-Google Cloud's Agent Platform
- Microsoft Foundry: משאב Foundry עם פריסה של מודל Claude. ראה Claude Code ב-Microsoft Foundry
- Amazon Bedrock: גישה מאושרת למודלי Claude. פרופילי cross-region inference, כגון מזהי המודלים שמתחילים ב-
#הגדרת האינטגרציה
מעבר לדרישות המוקדמות, עליך ליצור ארבעה דברים: זהות GitHub עבור ה-Claude Code GitHub Action, תצורת אמון בצד הענן, סודות המאגר, וקובץ ה-workflow. השלבים שלהלן עוברים על כל אחד מהם.
בחירת זהות GitHub: ה-Claude Code GitHub Action דוחף קומיטים ומפרסם תגובות דרך זהות GitHub. ההגדרה המהירה מתקינה את ה-Claude GitHub App הרשמי לשם כך. עם ספק ענן, אתה בוחר את הזהות בעצמך:
- Claude GitHub App הרשמי: התקן אותו במאגר, או דלג לשלב הבא אם הוא כבר מותקן
- GitHub App מותאם אישית: צור אפליקציה משלך, כמתואר להלן, כאשר אתה מעוניין רק בשלוש ההרשאות שבהן ה-Claude Code GitHub Action משתמש, במקום החבילה המלאה של האפליקציה הרשמית
- ה-
GITHUB_TOKENהאוטומטי של GitHub: אין צורך ליצור או להתקין אפליקציה, אך GitHub אינו מפעיל את תהליכי ה-CI שלך עבור קומיטים שבוצעו באמצעותו
דוגמאות ה-workflow בשלב הרביעי מבצעות אימות באמצעות אפליקציה מותאמת אישית. שלב זה מפרט גם מה לשנות עבור שתי האפשרויות האחרות.
כדי ליצור אפליקציה מותאמת אישית, רשום GitHub App חדש עם webhooks מושבתים, מכיוון שאינטגרציה זו אינה משתמשת בהם. הענק לו שלוש הרשאות מאגר:
- Contents: קריאה וכתיבה (read and write)
- Issues: קריאה וכתיבה (read and write)
- Pull requests: קריאה וכתיבה (read and write)
לאחר רישום האפליקציה, צור מפתח פרטי (private key) ושמור את קובץ ה-
.pemשהורד, רשום לפניך את ה-App ID מדף ההגדרות של האפליקציה, והתקן את האפליקציה במאגר שבו ה-Claude Code GitHub Action רץ. את המפתח ואת ה-ID תוסיף כסודות בשלב השלישי.הגדרת אימות ענן: הגדר את הענן שלך לתת אמון בטוקן ה-OIDC ש-GitHub מנפיק ל-workflow, כך שכל הרצה של ה-workflow תקבל פרטי אימות קצרי טווח לענן. הנקודות בכל ספק מסכמות מה יש ליצור, וכל סעיף מקשר למדריך של ספק הענן עצמו עבור השלבים ברמת הקונסולה.
Amazon Bedrock: צור את תצורת האמון בחשבון ה-AWS שלך, בהתאם למדריך AWS ליצירת ספקי זהות OIDC:
- הוסף ספק זהות GitHub OIDC עם כתובת URL של הספק
https://token.actions.githubusercontent.comו-audience שלsts.amazonaws.com - צור תפקיד IAM שהספק הזה נותן בו אמון כזהות אינטרנט (web identity), וצרף את פוליסת ההפעלה התחומה מתוך תצורת IAM, המעניקה את
bedrock:InvokeModel,bedrock:InvokeModelWithResponseStream,bedrock:ListInferenceProfiles, ו-bedrock:GetInferenceProfile, יחד עם שתי פעולות מנוי שלaws-marketplace - הגבל את פוליסת האמון של התפקיד למאגר שלך עם תנאי subject כגון
repo:your-org/your-repo:*. ראה את מדריך הקשחת OIDC של GitHub עבור מבנה ה-claim
רשום לפניך את ה-ARN של התפקיד. תוסיף אותו כסוד בשלב הבא.
Google Cloud's Agent Platform: צור את משאבי ה-federation בפרויקט ה-Google Cloud שלך, בהתאם לתיעוד Workload Identity Federation:
- הפעל שלושה ממשקי API: IAM Credentials, Security Token Service (STS), ואת Agent Platform API, ששם השירות שלו הוא
aiplatform.googleapis.com - צור Workload Identity Pool עם ספק GitHub OIDC שה-issuer שלו הוא
https://token.actions.githubusercontent.com, והוסף תנאי attribute שמגביל את ה-pool למאגר שלך - צור חשבון שירות (service account) ייעודי עם התפקיד
Vertex AI Userבלבד, שהואroles/aiplatform.user, ואפשר ל-pool להתחזות אליו (impersonate)
רשום לפניך את שם המשאב המלא של הספק ואת כתובת האימייל של חשבון השירות. תוסיף אותם כסודות בשלב הבא.
Microsoft Foundry: צור אפליקציית Microsoft Entra עם federated credential עבור המאגר שלך, בהתאם למדריך של Microsoft לאימות מתוך GitHub Actions:
- רשום אפליקציית Microsoft Entra והוסף federated identity credential שנותן אמון בטוקנים ש-GitHub מנפיק למאגר שלך. אפשר להשתמש ב-user-assigned managed identity במקום באפליקציה. לשניהם יש את ה-client ID שתרשום להלן
- הקצה לאפליקציה את התפקיד
Azure AI Userעל גבי משאב ה-Foundry שלך. ראה תצורת Azure RBAC עבור תפקיד מותאם אישית מצומצם יותר
רשום לפניך את ה-client ID של האפליקציה, את ה-tenant ID שלך, ואת ה-subscription ID שלך. תוסיף אותם כסודות בשלב הבא.
- הוסף ספק זהות GitHub OIDC עם כתובת URL של הספק
הוספת סודות למאגר: במאגר שבו ה-Claude Code GitHub Action רץ, הוסף את הסודות עבור הספק שלך, בנוסף לשני סודות האפליקציה אם יצרת GitHub App מותאם אישית בשלב הראשון. ראה את המדריך של GitHub בנושא שימוש בסודות ב-GitHub Actions.
סוד נדרש עבור ערך AWS_ROLE_TO_ASSUMEAmazon Bedrock ה-ARN של תפקיד ה-IAM GCP_WORKLOAD_IDENTITY_PROVIDERGoogle Cloud's Agent Platform שם המשאב המלא של הספק GCP_SERVICE_ACCOUNTGoogle Cloud's Agent Platform כתובת האימייל של חשבון השירות AZURE_CLIENT_IDMicrosoft Foundry ה-client ID של אפליקציית Entra AZURE_TENANT_IDMicrosoft Foundry ה-tenant ID שלך ב-Microsoft Entra AZURE_SUBSCRIPTION_IDMicrosoft Foundry ה-subscription ID שלך ב-Azure APP_IDGitHub App מותאם אישית ה-ID של ה-GitHub App APP_PRIVATE_KEYGitHub App מותאם אישית התוכן של קובץ המפתח הפרטי .pemיצירת קובץ ה-workflow: צור קובץ workflow עבור הספק שלך, כגון
.github/workflows/claude.yml. כל דוגמה מגיבה לאזכורי@claude, מבצעת אימות מול GitHub באמצעות אפליקציה מותאמת אישית, וכוללת את ההרשאהid-token: write, ש-GitHub דורש כדי להנפיק את טוקן ה-OIDC שספק הענן שלך ממיר לפרטי אימות (credentials).אם בחרת בזהות GitHub שונה בשלב הראשון, התאם את הדוגמה:
- Claude GitHub App הרשמי: מחק את השלב Generate GitHub App token ואת השורה
github_token - הטוקן האוטומטי של GitHub: מחק את שלב יצירת הטוקן ושנה את שורת ה-
github_tokenל-github_token: ${{ secrets.GITHUB_TOKEN }}
אזהרה: במאגרים ציבוריים, תגובה המכילה את ביטוי ההפעלה (trigger phrase) מכל משתמש מתחילה את ה-workflow הזה. שלבי ה-credentials רצים לפני שה-Claude Code GitHub Action בודק את הרשאת הכתיבה של כותב התגובה, כך שהפעולה דוחה משתמשים לא מורשים רק לאחר שה-workflow כבר יצר טוקן אפליקציה והתחבר לספק הענן שלך, דבר שמשאיר רשומות ב-audit log וצורך דקות של Actions. כדי להימנע מהרצות אלו, הוסף שלב שמאמת את הרשאת הכתיבה של כותב התגובה לפני שלבי ה-credentials.
Amazon Bedrock: החלף את ערך ה-
aws-regionבערך שלך. שלב ה-credentials מייצא אותו כ-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'טיפ: מזהי מודלים ב-Bedrock כוללים קידומת פרופיל cross-region inference כגון
us.. השתמש בקידומת המתאימה לקבוצת האזורים שבה הענקת גישה למודל.Google Cloud's Agent Platform: החלף את ערך ה-
CLOUD_ML_REGIONבערך שלך. אין צורך לקבוע את מזהה הפרויקט כערך קשיח (hardcode), מכיוון שה-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 בונה את כתובת ה-URL של ה-endpoint מתוכו. שלב ה-azure/loginמתחבר באמצעות טוקן ה-OIDC של ה-workflow, ו-Claude Code אוסף את פרטי האימות דרך שרשרת האימות המוגדרת כברירת מחדל ב-Azure (default credential chain).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טיפ: השתמש ב-ID של מודל שתואם לפריסת Claude במשאב ה-Foundry שלך. ראה Claude Code ב-Microsoft Foundry עבור הגדרת מודל והצמדת גרסאות (version pinning).
בכל ספק, באפשרותך להגביל את אורך הריצה ואת העלות על ידי הוספת
--max-turnsלתוךclaude_args. ראה ניהול עלויות.- Claude GitHub App הרשמי: מחק את השלב Generate GitHub App token ואת השורה
בדיקת ההגדרה: אזכר את
@claudeבתגובה על issue או PR, ולאחר מכן צפה בריצה בלשונית Actions של המאגר. Claude עונה בתגובה על אותו issue או PR.
#פתרון בעיות
ריצה שנכשלת נעצרת בדרך כלל באחד משני מקומות:
- שגיאות אימות: לרוב מדובר בהגדרה שגויה של OIDC. ודא שה-workflow כולל את ההרשאה
id-token: write, שתנאי המאגר בתצורת האמון תואם בדיוק למאגר שלך, וששמות הסודות ב-workflow שלך תואמים לאלה שהוספת - בעיות טריגר ו-CI: אלו מתנהגות באותו אופן כמו כאשר ה-Claude Code GitHub Action קורא ל-API של Claude. ראה את סעיף פתרון הבעיות בדף הראשי ואת ה-FAQ של Claude Code GitHub Action
#מה הלאה
- Claude Code GitHub Actions עבור דוגמאות, פרמטרים ושיטות עבודה מומלצות
- Claude Code ב-Amazon Bedrock עבור מזהי מודלים ואזורים ב-Bedrock
- Claude Code ב-Google Cloud's Agent Platform עבור מזהי מודלים ואזורים ב-Agent Platform
- Claude Code ב-Microsoft Foundry עבור הגדרת מודלים ונקודות קצה (endpoints) ב-Foundry