תיעוד 39
Claude Code ב-GitLab CI/CD
למדו על שילוב Claude Code בתהליך הפיתוח שלכם עם GitLab CI/CD
הערה
Claude Code ל-GitLab CI/CD נמצא כרגע בבטא. תכונות ופונקציונליות עשויות להתפתח ככל שנשפר את החוויה.
האינטגרציה הזו מתוחזקת על ידי GitLab. לתמיכה, ראו את ה-issue ב-GitLab הבא.
הערה
האינטגרציה הזו בנויה על גבי Claude Code CLI ו-Agent SDK, ומאפשרת שימוש תכנותי ב-Claude במשימות CI/CD ובתהליכי אוטומציה מותאמים אישית.
#למה להשתמש ב-Claude Code עם GitLab?
- יצירת MR מיידית: תארו מה אתם צריכים, ו-Claude מציע MR מלא עם שינויים והסבר
- מימוש אוטומטי: הפכו issues לקוד עובד בפקודה אחת או באזכור אחד
- מודע לפרויקט: Claude עוקב אחרי הנחיות
CLAUDE.mdודפוסי הקוד הקיימים - הגדרה פשוטה: הוסיפו משימה אחת ל-
.gitlab-ci.ymlומשתנה CI/CD מסוג masked - מוכן לארגון: בחרו Claude API, Amazon Bedrock, או Agent Platform של Google Cloud כדי לעמוד בדרישות תושבות נתונים ורכש
- מאובטח כברירת מחדל: רץ ב-runners של GitLab שלכם עם הגנת הענפים והאישורים שלכם
#איך זה עובד
Claude Code משתמש ב-GitLab CI/CD כדי להריץ משימות AI במשימות מבודדות ולהחזיר תוצאות דרך MRs:
תזמור מונחה אירועים: GitLab מאזין לטריגרים שבחרתם (לדוגמה, תגובה שמזכירה
@claudeב-issue, ב-MR או בשרשור סקירה). המשימה אוספת הקשר מהשרשור ומהמאגר, בונה prompts מהקלט הזה, ומריצה את Claude Code.הפשטת ספק: השתמשו בספק שמתאים לסביבה שלכם:
- Claude API (SaaS)
- Amazon Bedrock (גישה מבוססת IAM, אפשרויות בין אזורים)
- Agent Platform של Google Cloud (מקורי ל-GCP, Workload Identity Federation)
הרצה בארגז חול: כל אינטראקציה רצה בקונטיינר עם כללי רשת ומערכת קבצים מחמירים. Claude Code אוכף הרשאות בהיקף סביבת העבודה כדי להגביל כתיבות. כל שינוי עובר דרך MR כדי שסוקרים יראו את ה-diff והאישורים עדיין חלים.
בחרו נקודות קצה אזוריות כדי להפחית השהיה ולעמוד בדרישות ריבונות נתונים תוך שימוש בהסכמי ענן קיימים.
#מה Claude יכול לעשות?
ב-pipeline של GitLab, Claude Code יכול:
- ליצור ולעדכן MRs מתיאורי issue או מתגובות
- לנתח רגרסיות ביצועים ולהציע אופטימיזציות
- לממש תכונות ישירות בענף, ואז לפתוח MR
- לתקן באגים ורגרסיות שזוהו בבדיקות או בתגובות
- להגיב לתגובות המשך כדי לחזור על שינויים שהתבקשו
#הגדרה
#הגדרה מהירה
הדרך המהירה ביותר להתחיל היא להוסיף משימה מינימלית ל-.gitlab-ci.yml ולהגדיר את מפתח ה-API כמשתנה masked.
הוספת משתנה CI/CD מסוג masked
- עברו אל Settings → CI/CD → Variables
- הוסיפו
ANTHROPIC_API_KEY(masked, protected לפי הצורך)
הוספת משימת Claude ל-
.gitlab-ci.yml
stages:
- ai
claude:
stage: ai
image: node:24-alpine3.21
# Adjust rules to fit how you want to trigger the job:
# - manual runs
# - merge request events
# - web/API triggers when a comment contains '@claude'
rules:
- if: '$CI_PIPELINE_SOURCE == "web"'
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
variables:
GIT_STRATEGY: fetch
before_script:
- apk update
- apk add --no-cache git curl bash
- curl -fsSL https://claude.ai/install.sh | bash
# The installer places claude in ~/.local/bin, which isn't on PATH in this image
- export PATH="$HOME/.local/bin:$PATH"
script:
# Optional: start a GitLab MCP server if your setup provides one
- /bin/gitlab-mcp-server || true
# Use AI_FLOW_* variables when invoking via web/API triggers with context payloads
- echo "$AI_FLOW_INPUT for $AI_FLOW_CONTEXT on $AI_FLOW_EVENT"
- >
claude
-p "${AI_FLOW_INPUT:-'Review this MR and implement the requested changes'}"
--permission-mode acceptEdits
--allowedTools "Bash Read Edit Write mcp__gitlab"
--debugאחרי הוספת המשימה ומשתנה ANTHROPIC_API_KEY, בדקו על ידי הרצה ידנית של המשימה מ-CI/CD → Pipelines, או הפעילו אותה מ-MR כדי לאפשר ל-Claude להציע עדכונים בענף ולפתוח MR אם צריך.
הערה
כדי להריץ על Amazon Bedrock או על Agent Platform של Google Cloud במקום על Claude API, ראו את הסעיף שימוש עם Amazon Bedrock ו-Google Cloud בהמשך לאימות ולהגדרת הסביבה.
#הגדרה ידנית (מומלץ לייצור)
אם אתם מעדיפים הגדרה מבוקרת יותר או זקוקים לספקי ארגון:
הגדרת גישה לספק:
- Claude API: צרו ושמרו את
ANTHROPIC_API_KEYכמשתנה CI/CD מסוג masked - Amazon Bedrock: Configure GitLab → AWS OIDC וצרו תפקיד IAM עבור Amazon Bedrock
- Agent Platform של Google Cloud: Configure Workload Identity Federation for GitLab → GCP
- Claude API: צרו ושמרו את
הוספת אישורי פרויקט לפעולות GitLab API:
- השתמשו ב-
CI_JOB_TOKENכברירת מחדל, או צרו Project Access Token עם היקףapi - שמרו כ-
GITLAB_ACCESS_TOKEN(masked) אם משתמשים ב-PAT
- השתמשו ב-
הוספת משימת Claude ל-
.gitlab-ci.yml: השתמשו במשימת ההגדרה המהירה עבור Claude API, או במשימת ספק מדוגמאות הגדרה(אופציונלי) הפעלת טריגרים מונעי אזכור:
- הוסיפו webhook של הפרויקט עבור "Comments (notes)" למאזין האירועים שלכם (אם אתם משתמשים באחד)
- גרמו למאזין לקרוא ל-API של pipeline trigger עם משתנים כמו
AI_FLOW_INPUTו-AI_FLOW_CONTEXTכאשר תגובה מכילה@claude
#דוגמאות שימוש
#הפיכת issues ל-MRs
בתגובה ל-issue:
@claude implement this feature based on the issue descriptionClaude מנתח את ה-issue ואת בסיס הקוד, כותב שינויים בענף, ופותח MR לסקירה.
#קבלת עזרה במימוש
בדיון ב-MR:
@claude suggest a concrete approach to cache the results of this API callClaude מציע שינויים, מוסיף קוד עם caching מתאים, ומעדכן את ה-MR.
#תיקון באגים במהירות
בתגובה ל-issue או ל-MR:
@claude fix the TypeError in the user dashboard componentClaude מאתר את הבאג, מממש תיקון, ומעדכן את הענף או פותח MR חדש.
#שימוש עם Amazon Bedrock ו-Google Cloud
בסביבות ארגוניות אפשר להריץ את Claude Code במלואו על תשתית הענן שלכם, עם אותה חוויית מפתחים.
#Amazon Bedrock
#דרישות מוקדמות
לפני הגדרת Claude Code עם Amazon Bedrock, אתם צריכים:
- חשבון AWS עם גישת Amazon Bedrock למודלי Claude הרצויים
- GitLab מוגדר כספק זהות OIDC ב-AWS IAM
- תפקיד IAM עם הרשאות Amazon Bedrock ומדיניות אמון המוגבלת לפרויקט ול-refs של GitLab שלכם
- משתני GitLab CI/CD להנחת תפקיד:
AWS_ROLE_TO_ASSUME(role ARN)AWS_REGION(אזור Amazon Bedrock)
#הוראות הגדרה
הגדירו את AWS כך שמשימות GitLab CI יוכלו להניח תפקיד IAM דרך OIDC (בלי מפתחות סטטיים).
הגדרה נדרשת:
- הפעילו את Amazon Bedrock ובקשו גישה למודלי Claude היעד שלכם
- צרו ספק IAM OIDC עבור GitLab אם הוא עדיין לא קיים
- צרו תפקיד IAM שספק GitLab OIDC נותן בו אמון, מוגבל לפרויקט שלכם ול-refs מוגנים
- צרפו הרשאות בהרשאה מזערית ל-APIs של invoke ב-Amazon Bedrock
השתמשו בדוגמת משימת Amazon Bedrock כדי להחליף את אסימון ה-OIDC של המשימה באישורי AWS זמניים בזמן ריצה.
#Agent Platform של Google Cloud
#דרישות מוקדמות
לפני הגדרת Claude Code עם Agent Platform של Google Cloud, אתם צריכים:
- פרויקט Google Cloud עם:
- Agent Platform API של Google Cloud מופעל
- Workload Identity Federation מוגדר לתת אמון ב-OIDC של GitLab
- חשבון שירות ייעודי עם תפקידי Agent Platform של Google Cloud הנדרשים בלבד
- משתני GitLab CI/CD:
GCP_WORKLOAD_IDENTITY_PROVIDER(שם משאב הספק בלי הקידומת//iam.googleapis.com/, לדוגמהprojects/123456789/locations/global/workloadIdentityPools/my-pool/providers/my-provider)GCP_SERVICE_ACCOUNT(אימייל של חשבון השירות)GCP_PROJECT_ID(מזהה פרויקט Google Cloud)
#הוראות הגדרה
הגדירו את Google Cloud כך שמשימות GitLab CI יוכלו להתחזות לחשבון שירות דרך Workload Identity Federation.
הגדרה נדרשת:
- הפעילו את IAM Credentials API, את STS API ואת Agent Platform API של Google Cloud
- צרו Workload Identity Pool וספק עבור GitLab OIDC
- צרו חשבון שירות ייעודי עם תפקידי Agent Platform של Google Cloud
- העניקו ל-principal של WIF הרשאה להתחזות לחשבון השירות
השתמשו בדוגמת משימת Agent Platform כדי לאמת בלי לשמור מפתחות.
#דוגמאות הגדרה
בהמשך קטעי קוד מוכנים לשימוש שאפשר להתאים ל-pipeline שלכם.
#דוגמת משימת Amazon Bedrock (OIDC)
דרישות מוקדמות:
- Amazon Bedrock מופעל עם גישה למודל או למודלי Claude שבחרתם
- GitLab OIDC מוגדר ב-AWS עם תפקיד שנותן אמון בפרויקט וב-refs של GitLab שלכם
- תפקיד IAM עם הרשאות Amazon Bedrock (מומלצת הרשאה מזערית)
משתני CI/CD נדרשים:
AWS_ROLE_TO_ASSUME: ARN של תפקיד ה-IAM לגישת Amazon BedrockAWS_REGION: אזור Amazon Bedrock (לדוגמה,us-west-2)
GitLab מנפיק את אסימון ה-OIDC של המשימה מבלוק id_tokens: וחושף אותו כ-GITLAB_OIDC_TOKEN. הגדירו את aud לערך הקהל שהגדרתם אצל ספק הזהות IAM OIDC ב-AWS, לדוגמה כתובת מופע GitLab שלכם.
stages:
- ai
claude-bedrock:
stage: ai
image: node:24-alpine3.21
rules:
- if: '$CI_PIPELINE_SOURCE == "web"'
id_tokens:
GITLAB_OIDC_TOKEN:
aud: https://gitlab.example.com
before_script:
- apk add --no-cache bash curl jq git aws-cli
- curl -fsSL https://claude.ai/install.sh | bash
# The installer places claude in ~/.local/bin, which isn't on PATH in this image
- export PATH="$HOME/.local/bin:$PATH"
# Exchange the job's OIDC token for AWS credentials
- export AWS_WEB_IDENTITY_TOKEN_FILE="/tmp/oidc_token"
- printf "%s" "$GITLAB_OIDC_TOKEN" > "$AWS_WEB_IDENTITY_TOKEN_FILE"
- >
aws sts assume-role-with-web-identity
--role-arn "$AWS_ROLE_TO_ASSUME"
--role-session-name "gitlab-claude-$(date +%s)"
--web-identity-token "file://$AWS_WEB_IDENTITY_TOKEN_FILE"
--duration-seconds 3600 > /tmp/aws_creds.json
- export AWS_ACCESS_KEY_ID="$(jq -r .Credentials.AccessKeyId /tmp/aws_creds.json)"
- export AWS_SECRET_ACCESS_KEY="$(jq -r .Credentials.SecretAccessKey /tmp/aws_creds.json)"
- export AWS_SESSION_TOKEN="$(jq -r .Credentials.SessionToken /tmp/aws_creds.json)"
script:
- /bin/gitlab-mcp-server || true
- >
claude
-p "${AI_FLOW_INPUT:-'Implement the requested changes and open an MR'}"
--permission-mode acceptEdits
--allowedTools "Bash Read Edit Write mcp__gitlab"
--debug
variables:
AWS_REGION: "us-west-2"
CLAUDE_CODE_USE_BEDROCK: "1"הערה
מזהי מודלים עבור Amazon Bedrock כוללים קידומות לפי אזור (לדוגמה,
us.anthropic.claude-sonnet-4-6). העבירו את המודל הרצוי דרך הגדרת המשימה או דרך ה-prompt אם תהליך העבודה שלכם תומך בכך.
#דוגמת משימת Agent Platform (Workload Identity Federation)
דרישות מוקדמות:
- Agent Platform API של Google Cloud מופעל בפרויקט GCP שלכם
- Workload Identity Federation מוגדר לתת אמון ב-OIDC של GitLab
- חשבון שירות עם הרשאות Agent Platform של Google Cloud
משתני CI/CD נדרשים:
GCP_WORKLOAD_IDENTITY_PROVIDER: שם משאב הספק בלי הקידומת//iam.googleapis.com/, לדוגמהprojects/123456789/locations/global/workloadIdentityPools/my-pool/providers/my-providerGCP_SERVICE_ACCOUNT: אימייל של חשבון השירותGCP_PROJECT_ID: מזהה פרויקט Google CloudCLOUD_ML_REGION: אזור Agent Platform של Google Cloud (לדוגמה,us-east5)
GitLab מנפיק את אסימון ה-OIDC של המשימה מבלוק id_tokens: וחושף אותו כ-GITLAB_OIDC_TOKEN. הגדירו את aud לערך הקהל שהגדרתם אצל ספק Workload Identity Pool, לדוגמה כתובת מופע GitLab שלכם. המשימה כותבת את האסימון לקובץ, ורשומת credential_source בתצורת האישורים אומרת לספריות האימות של Google לקרוא אותו משם. הגדרת GOOGLE_APPLICATION_CREDENTIALS לקובץ תצורת האישורים הופכת אותו לזמין ל-Claude Code דרך Application Default Credentials.
stages:
- ai
claude-vertex:
stage: ai
image: gcr.io/google.com/cloudsdktool/google-cloud-cli:slim
rules:
- if: '$CI_PIPELINE_SOURCE == "web"'
id_tokens:
GITLAB_OIDC_TOKEN:
aud: https://gitlab.example.com
before_script:
- apt-get update && apt-get install -y git && apt-get clean
- curl -fsSL https://claude.ai/install.sh | bash
# The installer places claude in ~/.local/bin, which isn't on PATH in this image
- export PATH="$HOME/.local/bin:$PATH"
# Write the job's OIDC token where credential_source expects it
- printf "%s" "$GITLAB_OIDC_TOKEN" > /tmp/oidc_token
# Write the WIF credential configuration to a file (no downloaded keys)
- |
cat > /tmp/cred.json <<EOF
{
"type": "external_account",
"audience": "//iam.googleapis.com/${GCP_WORKLOAD_IDENTITY_PROVIDER}",
"subject_token_type": "urn:ietf:params:oauth:token-type:jwt",
"token_url": "https://sts.googleapis.com/v1/token",
"credential_source": {
"file": "/tmp/oidc_token"
},
"service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/${GCP_SERVICE_ACCOUNT}:generateAccessToken"
}
EOF
# Expose the credentials to Claude Code via Application Default Credentials
- export GOOGLE_APPLICATION_CREDENTIALS=/tmp/cred.json
# Authenticate the gcloud CLI with the same credential configuration
- gcloud auth login --cred-file=/tmp/cred.json
- gcloud config set project "$GCP_PROJECT_ID"
script:
- /bin/gitlab-mcp-server || true
- >
CLOUD_ML_REGION="${CLOUD_ML_REGION:-us-east5}"
claude
-p "${AI_FLOW_INPUT:-'Review and update code as requested'}"
--permission-mode acceptEdits
--allowedTools "Bash Read Edit Write mcp__gitlab"
--debug
variables:
CLOUD_ML_REGION: "us-east5"
CLAUDE_CODE_USE_VERTEX: "1"
ANTHROPIC_VERTEX_PROJECT_ID: "$GCP_PROJECT_ID"הערה
עם Workload Identity Federation אין צורך לשמור מפתחות של חשבון שירות. השתמשו בתנאי אמון ייחודיים למאגר ובחשבונות שירות בהרשאה מזערית.
#שיטות עבודה מומלצות
#הגדרת CLAUDE.md
צרו קובץ CLAUDE.md בשורש המאגר כדי להגדיר תקני קוד, קריטריוני סקירה וכללים ייחודיים לפרויקט. Claude קורא את הקובץ הזה במהלך הרצות ועוקב אחרי המוסכמות שלכם כשהוא מציע שינויים.
#שיקולי אבטחה
לעולם אל תבצעו commit של מפתחות API או אישורי ענן למאגר. תמיד השתמשו במשתני GitLab CI/CD:
- הוסיפו את
ANTHROPIC_API_KEYכמשתנה masked (והגנו עליו אם צריך) - השתמשו ב-OIDC ייחודי לספק כשאפשר (בלי מפתחות ארוכי טווח)
- הגבילו הרשאות משימה ויציאת רשת
- סקרו את ה-MRs של Claude כמו כל תורם אחר
#אופטימיזציה של ביצועים
- שמרו על
CLAUDE.mdממוקד ותמציתי - ספקו תיאורי issue ו-MR ברורים כדי להפחית חזרות
- שמרו במטמון התקנות npm וחבילות ב-runners כשאפשר
#עלויות CI
כשמשתמשים ב-Claude Code עם GitLab CI/CD, שימו לב לעלויות הנלוות:
זמן GitLab Runner:
- Claude רץ על ה-runners של GitLab שלכם וצורך דקות מחשוב
- ראו את חיוב ה-runner בתוכנית GitLab שלכם לפרטים
עלויות API:
- כל אינטראקציה עם Claude צורכת טוקנים לפי גודל ה-prompt והתשובה
- שימוש בטוקנים משתנה לפי מורכבות המשימה וגודל בסיס הקוד
- ראו תמחור Anthropic לפרטים
טיפים לאופטימיזציה של עלות:
- השתמשו בפקודות
@claudeספציפיות כדי להפחית תורות מיותרות - הגדירו ערכי
--max-turnsו-timeoutשל המשימה בהתאם - הגבילו מקביליות כדי לשלוט בהרצות מקבילות
- השתמשו בפקודות
#פתרון בעיות
#Claude לא מגיב לפקודות @claude
- ודאו שה-pipeline שלכם מופעל (ידנית, באירוע MR, או דרך מאזין אירועי note או webhook)
- ודאו ש-
ANTHROPIC_API_KEYאו משתני ספק הענן קיימים - בדקו שהתגובה מכילה
@claude(ולא/claude) ושטריגר האזכור שלכם מוגדר
#המשימה לא יכולה לכתוב תגובות או לפתוח MRs
- ודאו של-
CI_JOB_TOKENיש הרשאות מספיקות לפרויקט, או השתמשו ב-Project Access Token עם היקףapi - בדקו שהכלי
mcp__gitlabמופעל ב---allowedTools - אשרו שהמשימה רצה בהקשר של ה-MR או שיש לה מספיק הקשר דרך משתני
AI_FLOW_*
#שגיאות אימות
- עבור Claude API: אשרו ש-
ANTHROPIC_API_KEYתקף ושתוקפו לא פג - עבור Amazon Bedrock או Agent Platform של Google Cloud: אמתו את תצורת OIDC/WIF, התחזות לתפקיד ושמות סודות. אשרו זמינות של אזור ומודל
#הגדרות מתקדמות
#פרמטרים ומשתנים נפוצים
שלוט בהרצות של Claude Code במשימות שלך באמצעות דגלי CLI, מילות מפתח של GitLab ומשתנים אלה:
-p: ספק הוראות בשורה, לדוגמהclaude -p "Review this MR"--max-turns: הגבל את מספר סבבי הלוך ושובtimeout: הגבל את זמן הריצה הכולל של המשימה באמצעות מילת המפתחtimeoutברמת המשימה ב-GitLab, לדוגמהtimeout: 30mANTHROPIC_API_KEY: נדרש עבור Claude API (לא בשימוש עבור Amazon Bedrock או Agent Platform של Google Cloud)- סביבה ספציפית לספק:
AWS_REGION, משתני פרויקט/אזור עבור Agent Platform של Google Cloud
[!NOTE]
דגלים ופרמטרים מדויקים עשויים להשתנות לפי גרסת
@anthropic-ai/claude-code. הרץclaude --helpבמשימה שלך כדי לראות את האפשרויות הנתמכות.
#התאמה אישית של ההתנהגות של Claude
אפשר להנחות את Claude בשתי דרכים עיקריות:
- CLAUDE.md: הגדר תקני קוד, דרישות אבטחה ומוסכמות פרויקט. Claude קורא את הקובץ במהלך הרצות ועוקב אחרי הכללים שלך.
- הנחיות מותאמות אישית: העבר הוראות ספציפיות למשימה באמצעות
-pבמשימה. השתמש בהנחיות שונות למשימות שונות (לדוגמה, סקירה, מימוש, רפקטור).