Claude Code GitLab CI/CD
เรียนรู้การผสานรวม Claude Code เข้ากับ workflow การพัฒนาด้วย GitLab CI/CD
ข้อมูล: Claude Code สำหรับ GitLab CI/CD อยู่ใน beta ฟีเจอร์และการทำงานอาจเปลี่ยนแปลง การผสานรวมนี้ดูแลโดย GitLab สำหรับการสนับสนุนดู GitLab issue
ทำไมต้องใช้ Claude Code กับ GitLab?
- สร้าง MR ได้ทันที: อธิบายสิ่งที่ต้องการ และ Claude จะสร้าง MR พร้อมการเปลี่ยนแปลงและคำอธิบาย
- นำไปใช้งานอัตโนมัติ: เปลี่ยน issue เป็นโค้ดที่ใช้งานได้ด้วยคำสั่งเดียว
- รู้จักโปรเจกต์: Claude ทำตามแนวทาง
CLAUDE.mdและ code pattern ที่มีอยู่ - ตั้งค่าง่าย: เพิ่ม job เดียวใน
.gitlab-ci.ymlและตัวแปร CI/CD - พร้อมใช้ Enterprise: เลือก Claude API, Amazon Bedrock หรือ Google Vertex AI
- ปลอดภัยโดยค่าเริ่มต้น: รันบน GitLab runner ของคุณพร้อม branch protection
การตั้งค่า
Quick setup
-
เพิ่มตัวแปร CI/CD แบบ masked: ไปที่ Settings → CI/CD → Variables เพิ่ม
ANTHROPIC_API_KEY(masked) -
เพิ่ม Claude job ใน
.gitlab-ci.yml:
stages:
- ai
claude:
stage: ai
image: node:24-alpine3.21
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
script:
- /bin/gitlab-mcp-server || true
- 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
ตัวอย่างการใช้งาน
เปลี่ยน Issue เป็น MR
ใน issue comment:
@claude implement this feature based on the issue description
Claude วิเคราะห์ issue และ codebase เขียนการเปลี่ยนแปลงใน branch และเปิด MR เพื่อตรวจสอบ
รับความช่วยเหลือในการนำไปใช้
ใน MR discussion:
@claude suggest a concrete approach to cache the results of this API call
แก้ไขบั๊กได้เร็ว
ใน issue หรือ MR comment:
@claude fix the TypeError in the user dashboard component
การใช้กับ Amazon Bedrock & Google Vertex AI
Amazon Bedrock
ข้อกำหนดเบื้องต้น:
- บัญชี AWS ที่เข้าถึง Amazon Bedrock
- GitLab ที่กำหนดค่าเป็น OIDC identity provider ใน AWS IAM
- IAM role พร้อมสิทธิ์ Bedrock
ตัวแปร CI/CD ที่ต้องการ:
AWS_ROLE_TO_ASSUMEAWS_REGION
Google Vertex AI
ข้อกำหนดเบื้องต้น:
- Google Cloud project ที่เปิดใช้ Vertex AI API
- Workload Identity Federation ที่กำหนดค่าเพื่อ trust GitLab OIDC
- Service account เฉพาะที่มีสิทธิ์ Vertex AI
ตัวแปร CI/CD ที่ต้องการ:
GCP_WORKLOAD_IDENTITY_PROVIDERGCP_SERVICE_ACCOUNT
ตัวอย่างการกำหนดค่า
Basic .gitlab-ci.yml (Claude API)
stages:
- ai
claude:
stage: ai
image: node:24-alpine3.21
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
script:
- /bin/gitlab-mcp-server || true
- >
claude
-p "${AI_FLOW_INPUT:-'Summarize recent changes and suggest improvements'}"
--permission-mode acceptEdits
--allowedTools "Bash Read Edit Write mcp__gitlab"
--debug
ตัวอย่าง Amazon Bedrock job (OIDC)
claude-bedrock:
stage: ai
image: node:24-alpine3.21
rules:
- if: '$CI_PIPELINE_SOURCE == "web"'
before_script:
- apk add --no-cache bash curl jq git python3 py3-pip
- pip install --no-cache-dir awscli
- curl -fsSL https://claude.ai/install.sh | bash
- export AWS_WEB_IDENTITY_TOKEN_FILE="${CI_JOB_JWT_FILE:-/tmp/oidc_token}"
- if [ -n "${CI_JOB_JWT_V2}" ]; then printf "%s" "$CI_JOB_JWT_V2" > "$AWS_WEB_IDENTITY_TOKEN_FILE"; fi
- >
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"
Best Practices
การกำหนดค่า CLAUDE.md
สร้างไฟล์ CLAUDE.md ที่ root ของ repository เพื่อกำหนดมาตรฐานการเขียนโค้ด criteria การ review และกฎเฉพาะโปรเจกต์
ข้อพิจารณาด้านความปลอดภัย
อย่า commit API keys หรือ cloud credentials ไปยัง repository เด็ดขาด ใช้ตัวแปร GitLab CI/CD เสมอ:
- เพิ่ม
ANTHROPIC_API_KEYเป็นตัวแปรแบบ masked - ใช้ OIDC ของ provider เมื่อเป็นไปได้ (ไม่ต้องใช้ key ที่มีอายุยาว)
ต้นทุน CI
- GitLab Runner time: Claude รันบน GitLab runner และใช้นาทีในการคำนวณ
- API costs: แต่ละ Claude interaction ใช้ token ตามขนาดของ prompt และการตอบสนอง
การแก้ปัญหา
Claude ไม่ตอบสนองต่อคำสั่ง @claude: ตรวจสอบว่า pipeline ถูก trigger และตัวแปร CI/CD (ANTHROPIC_API_KEY) มีอยู่และไม่ถูก mask
Job ไม่สามารถเขียน comment หรือเปิด MR: ตรวจสอบว่า CI_JOB_TOKEN มีสิทธิ์เพียงพอ
การยืนยันตัวตนผิดพลาด: สำหรับ Claude API ยืนยันว่า ANTHROPIC_API_KEY ถูกต้อง สำหรับ Bedrock/Vertex ตรวจสอบ OIDC/WIF configuration