Claude Code untuk GitLab CI/CD saat ini dalam beta. Fitur dan fungsionalitas dapat berkembang saat kami menyempurnakan pengalaman.Integrasi ini dikelola oleh GitLab. Untuk dukungan, lihat masalah GitLab berikut.
Integrasi ini dibangun di atas Claude Code CLI dan SDK, memungkinkan penggunaan Claude secara terprogram dalam pekerjaan CI/CD Anda dan alur kerja otomasi khusus.

Mengapa menggunakan Claude Code dengan GitLab?

  • Pembuatan MR instan: Jelaskan apa yang Anda butuhkan, dan Claude mengusulkan MR lengkap dengan perubahan dan penjelasan
  • Implementasi otomatis: Ubah masalah menjadi kode yang berfungsi dengan satu perintah atau penyebutan
  • Menyadari proyek: Claude mengikuti panduan CLAUDE.md Anda dan pola kode yang ada
  • Penyiapan sederhana: Tambahkan satu pekerjaan ke .gitlab-ci.yml dan variabel CI/CD yang disembunyikan
  • Siap untuk perusahaan: Pilih Claude API, AWS Bedrock, atau Google Vertex AI untuk memenuhi kebutuhan residensi data dan pengadaan
  • Aman secara default: Berjalan di runner GitLab Anda dengan perlindungan cabang dan persetujuan Anda

Cara kerjanya

Claude Code menggunakan GitLab CI/CD untuk menjalankan tugas AI dalam pekerjaan terisolasi dan melakukan komit hasil kembali melalui MR:
  1. Orkestrasi berbasis peristiwa: GitLab mendengarkan pemicu pilihan Anda (misalnya, komentar yang menyebutkan @claude dalam masalah, MR, atau utas ulasan). Pekerjaan mengumpulkan konteks dari utas dan repositori, membangun prompt dari input tersebut, dan menjalankan Claude Code.
  2. Abstraksi penyedia: Gunakan penyedia yang sesuai dengan lingkungan Anda:
    • Claude API (SaaS)
    • AWS Bedrock (akses berbasis IAM, opsi lintas wilayah)
    • Google Vertex AI (asli GCP, Workload Identity Federation)
  3. Eksekusi terisolasi: Setiap interaksi berjalan dalam kontainer dengan aturan jaringan dan sistem file yang ketat. Claude Code memberlakukan izin berskop ruang kerja untuk membatasi penulisan. Setiap perubahan mengalir melalui MR sehingga pengulas melihat diff dan persetujuan masih berlaku.
Pilih titik akhir regional untuk mengurangi latensi dan memenuhi persyaratan kedaulatan data sambil menggunakan perjanjian cloud yang ada.

Apa yang dapat dilakukan Claude?

Claude Code memungkinkan alur kerja CI/CD yang kuat yang mengubah cara Anda bekerja dengan kode:
  • Buat dan perbarui MR dari deskripsi masalah atau komentar
  • Analisis regresi kinerja dan usulkan optimisasi
  • Implementasikan fitur langsung di cabang, kemudian buka MR
  • Perbaiki bug dan regresi yang diidentifikasi oleh tes atau komentar
  • Merespons komentar lanjutan untuk mengulangi perubahan yang diminta

Penyiapan

Penyiapan cepat

Cara tercepat untuk memulai adalah menambahkan pekerjaan minimal ke .gitlab-ci.yml Anda dan menetapkan kunci API Anda sebagai variabel yang disembunyikan.
  1. Tambahkan variabel CI/CD yang disembunyikan
    • Buka SettingsCI/CDVariables
    • Tambahkan ANTHROPIC_API_KEY (disembunyikan, dilindungi sesuai kebutuhan)
  2. Tambahkan pekerjaan Claude ke .gitlab-ci.yml
stages:
  - ai

claude:
  stage: ai
  image: node:24-alpine3.21
  # Sesuaikan aturan agar sesuai dengan cara Anda ingin memicu pekerjaan:
  # - menjalankan manual
  # - peristiwa permintaan penggabungan
  # - pemicu web/API ketika komentar berisi '@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
    - npm install -g @anthropic-ai/claude-code
  script:
    # Opsional: mulai server GitLab MCP jika penyiapan Anda menyediakannya
    - /bin/gitlab-mcp-server || true
    # Gunakan variabel AI_FLOW_* saat memanggil melalui pemicu web/API dengan muatan konteks
    - 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
Setelah menambahkan pekerjaan dan variabel ANTHROPIC_API_KEY Anda, uji dengan menjalankan pekerjaan secara manual dari CI/CDPipelines, atau picu dari MR untuk membiarkan Claude mengusulkan pembaruan di cabang dan membuka MR jika diperlukan.
Untuk menjalankan di AWS Bedrock atau Google Vertex AI alih-alih Claude API, lihat bagian Menggunakan dengan AWS Bedrock & Google Vertex AI di bawah untuk penyiapan autentikasi dan lingkungan.

Penyiapan manual (direkomendasikan untuk produksi)

Jika Anda lebih suka penyiapan yang lebih terkontrol atau memerlukan penyedia perusahaan:
  1. Konfigurasi akses penyedia:
    • Claude API: Buat dan simpan ANTHROPIC_API_KEY sebagai variabel CI/CD yang disembunyikan
    • AWS Bedrock: Konfigurasi GitLabAWS OIDC dan buat peran IAM untuk Bedrock
    • Google Vertex AI: Konfigurasi Workload Identity Federation untuk GitLabGCP
  2. Tambahkan kredensial proyek untuk operasi GitLab API:
    • Gunakan CI_JOB_TOKEN secara default, atau buat Project Access Token dengan cakupan api
    • Simpan sebagai GITLAB_ACCESS_TOKEN (disembunyikan) jika menggunakan PAT
  3. Tambahkan pekerjaan Claude ke .gitlab-ci.yml (lihat contoh di bawah)
  4. (Opsional) Aktifkan pemicu berbasis penyebutan:
    • Tambahkan webhook proyek untuk “Comments (notes)” ke pendengar peristiwa Anda (jika Anda menggunakannya)
    • Buat pendengar memanggil API pemicu pipeline dengan variabel seperti AI_FLOW_INPUT dan AI_FLOW_CONTEXT ketika komentar berisi @claude

Contoh kasus penggunaan

Ubah masalah menjadi MR

Dalam komentar masalah:
@claude implement this feature based on the issue description
Claude menganalisis masalah dan basis kode, menulis perubahan di cabang, dan membuka MR untuk ditinjau.

Dapatkan bantuan implementasi

Dalam diskusi MR:
@claude suggest a concrete approach to cache the results of this API call
Claude mengusulkan perubahan, menambahkan kode dengan caching yang sesuai, dan memperbarui MR.

Perbaiki bug dengan cepat

Dalam komentar masalah atau MR:
@claude fix the TypeError in the user dashboard component
Claude menemukan bug, mengimplementasikan perbaikan, dan memperbarui cabang atau membuka MR baru.

Menggunakan dengan AWS Bedrock & Google Vertex AI

Untuk lingkungan perusahaan, Anda dapat menjalankan Claude Code sepenuhnya di infrastruktur cloud Anda dengan pengalaman pengembang yang sama.

Prasyarat

Sebelum menyiapkan Claude Code dengan AWS Bedrock, Anda memerlukan:
  1. Akun AWS dengan akses Amazon Bedrock ke model Claude yang diinginkan
  2. GitLab dikonfigurasi sebagai penyedia identitas OIDC di AWS IAM
  3. Peran IAM dengan izin Bedrock dan kebijakan kepercayaan yang dibatasi pada proyek/ref GitLab Anda
  4. Variabel CI/CD GitLab untuk asumsi peran:
    • AWS_ROLE_TO_ASSUME (ARN peran)
    • AWS_REGION (wilayah Bedrock)

Instruksi penyiapan

Konfigurasi AWS untuk memungkinkan pekerjaan GitLab CI mengasumsikan peran IAM melalui OIDC (tanpa kunci statis).Penyiapan yang diperlukan:
  1. Aktifkan Amazon Bedrock dan minta akses ke model Claude target Anda
  2. Buat penyedia OIDC IAM untuk GitLab jika belum ada
  3. Buat peran IAM yang dipercaya oleh penyedia OIDC GitLab, dibatasi pada proyek dan ref yang dilindungi Anda
  4. Lampirkan izin privilege minimal untuk API invoke Bedrock
Nilai yang diperlukan untuk disimpan dalam variabel CI/CD:
  • AWS_ROLE_TO_ASSUME
  • AWS_REGION
Tambahkan variabel di Settings → CI/CD → Variables:
# Untuk AWS Bedrock:
- AWS_ROLE_TO_ASSUME
- AWS_REGION
Gunakan contoh pekerjaan AWS Bedrock di atas untuk menukar token pekerjaan GitLab dengan kredensial AWS sementara saat runtime.

Contoh konfigurasi

Di bawah ini adalah cuplikan siap pakai yang dapat Anda sesuaikan dengan pipeline Anda.

.gitlab-ci.yml dasar (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
    - npm install -g @anthropic-ai/claude-code
  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
  # Claude Code akan menggunakan ANTHROPIC_API_KEY dari variabel CI/CD

Contoh pekerjaan AWS Bedrock (OIDC)

Prasyarat:
  • Amazon Bedrock diaktifkan dengan akses ke model Claude pilihan Anda
  • GitLab OIDC dikonfigurasi di AWS dengan peran yang mempercayai proyek dan ref GitLab Anda
  • Peran IAM dengan izin Bedrock (privilege minimal direkomendasikan)
Variabel CI/CD yang diperlukan:
  • AWS_ROLE_TO_ASSUME: ARN peran IAM untuk akses Bedrock
  • AWS_REGION: Wilayah Bedrock (misalnya, us-west-2)
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
    - npm install -g @anthropic-ai/claude-code
    # Tukar token OIDC GitLab dengan kredensial AWS
    - 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"
ID model untuk Bedrock mencakup awalan spesifik wilayah dan akhiran versi (misalnya, us.anthropic.claude-sonnet-4-5-20250929-v1:0). Teruskan model yang diinginkan melalui konfigurasi pekerjaan Anda atau prompt jika alur kerja Anda mendukungnya.

Contoh pekerjaan Google Vertex AI (Workload Identity Federation)

Prasyarat:
  • Vertex AI API diaktifkan di proyek GCP Anda
  • Workload Identity Federation dikonfigurasi untuk mempercayai GitLab OIDC
  • Akun layanan dengan izin Vertex AI
Variabel CI/CD yang diperlukan:
  • GCP_WORKLOAD_IDENTITY_PROVIDER: Nama sumber daya penyedia lengkap
  • GCP_SERVICE_ACCOUNT: Email akun layanan
  • CLOUD_ML_REGION: Wilayah Vertex (misalnya, us-east5)
claude-vertex:
  stage: ai
  image: gcr.io/google.com/cloudsdktool/google-cloud-cli:slim
  rules:
    - if: '$CI_PIPELINE_SOURCE == "web"'
  before_script:
    - apt-get update && apt-get install -y git nodejs npm && apt-get clean
    - npm install -g @anthropic-ai/claude-code
    # Autentikasi ke Google Cloud melalui WIF (tanpa kunci yang diunduh)
    - >
      gcloud auth login --cred-file=<(cat <<EOF
      {
        "type": "external_account",
        "audience": "${GCP_WORKLOAD_IDENTITY_PROVIDER}",
        "subject_token_type": "urn:ietf:params:oauth:token-type:jwt",
        "service_account_impersonation_url": "https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/${GCP_SERVICE_ACCOUNT}:generateAccessToken",
        "token_url": "https://sts.googleapis.com/v1/token"
      }
      EOF
      )
    - gcloud config set project "$(gcloud projects list --format='value(projectId)' --filter="name:${CI_PROJECT_NAMESPACE}" | head -n1)" || true
  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"
Dengan Workload Identity Federation, Anda tidak perlu menyimpan kunci akun layanan. Gunakan kondisi kepercayaan spesifik repositori dan akun layanan privilege minimal.

Praktik terbaik

Konfigurasi CLAUDE.md

Buat file CLAUDE.md di akar repositori untuk menentukan standar pengkodean, kriteria ulasan, dan aturan spesifik proyek. Claude membaca file ini selama berjalan dan mengikuti konvensi Anda saat mengusulkan perubahan.

Pertimbangan keamanan

Jangan pernah melakukan komit kunci API atau kredensial cloud ke repositori Anda! Selalu gunakan variabel CI/CD GitLab:
  • Tambahkan ANTHROPIC_API_KEY sebagai variabel yang disembunyikan (dan lindungi jika diperlukan)
  • Gunakan OIDC spesifik penyedia jika memungkinkan (tanpa kunci jangka panjang)
  • Batasi izin pekerjaan dan egress jaringan
  • Tinjau MR Claude seperti kontributor lainnya

Mengoptimalkan kinerja

  • Jaga CLAUDE.md tetap fokus dan ringkas
  • Berikan deskripsi masalah/MR yang jelas untuk mengurangi iterasi
  • Konfigurasi timeout pekerjaan yang masuk akal untuk menghindari lari yang liar
  • Cache npm dan instalasi paket di runner jika memungkinkan

Biaya CI

Saat menggunakan Claude Code dengan GitLab CI/CD, waspadai biaya terkait:
  • Waktu GitLab Runner:
    • Claude berjalan di runner GitLab Anda dan mengonsumsi menit komputasi
    • Lihat penagihan runner rencana GitLab Anda untuk detail
  • Biaya API:
    • Setiap interaksi Claude mengonsumsi token berdasarkan ukuran prompt dan respons
    • Penggunaan token bervariasi menurut kompleksitas tugas dan ukuran basis kode
    • Lihat harga Anthropic untuk detail
  • Tips optimisasi biaya:
    • Gunakan perintah @claude spesifik untuk mengurangi putaran yang tidak perlu
    • Tetapkan nilai max_turns dan timeout pekerjaan yang sesuai
    • Batasi konkurensi untuk mengontrol jalankan paralel

Keamanan dan tata kelola

  • Setiap pekerjaan berjalan dalam kontainer terisolasi dengan akses jaringan terbatas
  • Perubahan Claude mengalir melalui MR sehingga pengulas melihat setiap diff
  • Perlindungan cabang dan aturan persetujuan berlaku untuk kode yang dihasilkan AI
  • Claude Code menggunakan izin berskop ruang kerja untuk membatasi penulisan
  • Biaya tetap di bawah kontrol Anda karena Anda membawa kredensial penyedia Anda sendiri

Pemecahan masalah

Claude tidak merespons perintah @claude

  • Verifikasi pipeline Anda dipicu (secara manual, peristiwa MR, atau melalui pendengar peristiwa catatan/webhook)
  • Pastikan variabel CI/CD (ANTHROPIC_API_KEY atau pengaturan penyedia cloud) ada dan tidak disembunyikan
  • Periksa bahwa komentar berisi @claude (bukan /claude) dan pemicu penyebutan Anda dikonfigurasi

Pekerjaan tidak dapat menulis komentar atau membuka MR

  • Pastikan CI_JOB_TOKEN memiliki izin yang cukup untuk proyek, atau gunakan Project Access Token dengan cakupan api
  • Periksa alat mcp__gitlab diaktifkan di --allowedTools
  • Konfirmkan pekerjaan berjalan dalam konteks MR atau memiliki konteks yang cukup melalui variabel AI_FLOW_*

Kesalahan autentikasi

  • Untuk Claude API: Konfirmkan ANTHROPIC_API_KEY valid dan tidak kadaluarsa
  • Untuk Bedrock/Vertex: Verifikasi konfigurasi OIDC/WIF, impersonasi peran, dan nama rahasia; konfirmkan ketersediaan wilayah dan model

Konfigurasi lanjutan

Parameter dan variabel umum

Claude Code mendukung input yang umum digunakan ini:
  • prompt / prompt_file: Berikan instruksi inline (-p) atau melalui file
  • max_turns: Batasi jumlah iterasi bolak-balik
  • timeout_minutes: Batasi waktu eksekusi total
  • ANTHROPIC_API_KEY: Diperlukan untuk Claude API (tidak digunakan untuk Bedrock/Vertex)
  • Lingkungan spesifik penyedia: AWS_REGION, variabel proyek/wilayah untuk Vertex
Bendera dan parameter yang tepat dapat bervariasi menurut versi @anthropic-ai/claude-code. Jalankan claude --help dalam pekerjaan Anda untuk melihat opsi yang didukung.

Menyesuaikan perilaku Claude

Anda dapat memandu Claude dengan dua cara utama:
  1. CLAUDE.md: Tentukan standar pengkodean, persyaratan keamanan, dan konvensi proyek. Claude membaca ini selama berjalan dan mengikuti aturan Anda.
  2. Prompt khusus: Teruskan instruksi spesifik tugas melalui prompt/prompt_file dalam pekerjaan. Gunakan prompt berbeda untuk pekerjaan berbeda (misalnya, ulasan, implementasi, refaktor).