Claude Code untuk GitLab CI/CD saat ini dalam versi beta. Fitur dan fungsionalitas mungkin berkembang seiring kami menyempurnakan pengalaman.

Integrasi ini dikelola oleh GitLab. Untuk dukungan, lihat GitLab issue berikut.

Integrasi ini dibangun di atas Claude Code CLI dan SDK, memungkinkan penggunaan Claude secara programatis dalam pekerjaan CI/CD dan alur kerja otomasi kustom Anda.

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 isu menjadi kode yang berfungsi dengan satu perintah atau penyebutan
  • Sadar proyek: Claude mengikuti pedoman CLAUDE.md Anda dan pola kode yang ada
  • Pengaturan sederhana: Tambahkan satu pekerjaan ke .gitlab-ci.yml dan variabel CI/CD yang disamarkan
  • Siap enterprise: Pilih Anthropic API, AWS Bedrock, atau Google Vertex AI untuk memenuhi kebutuhan residensi data dan pengadaan
  • Aman secara default: Berjalan di GitLab runner Anda dengan perlindungan cabang dan persetujuan Anda

Cara kerjanya

Claude Code menggunakan GitLab CI/CD untuk menjalankan tugas AI dalam pekerjaan terisolasi dan mengirimkan hasil kembali melalui MR:

  1. Orkestrasi berbasis peristiwa: GitLab mendengarkan pemicu yang Anda pilih (misalnya, komentar yang menyebutkan @claude dalam isu, MR, atau thread review). Pekerjaan mengumpulkan konteks dari thread dan repositori, membangun prompt dari input tersebut, dan menjalankan Claude Code.

  2. Abstraksi penyedia: Gunakan penyedia yang sesuai dengan lingkungan Anda:

    • Anthropic API (SaaS)
    • AWS Bedrock (akses berbasis IAM, opsi lintas wilayah)
    • Google Vertex AI (GCP-native, Workload Identity Federation)
  3. Eksekusi sandbox: Setiap interaksi berjalan dalam kontainer dengan aturan jaringan dan sistem file yang ketat. Claude Code menerapkan izin terbatas ruang kerja untuk membatasi penulisan. Setiap perubahan mengalir melalui MR sehingga reviewer melihat diff dan persetujuan tetap berlaku.

Pilih endpoint regional untuk mengurangi latensi dan memenuhi persyaratan kedaulatan data sambil menggunakan perjanjian cloud yang ada.

Apa yang bisa dilakukan Claude?

Claude Code memungkinkan alur kerja CI/CD yang kuat yang mengubah cara Anda bekerja dengan kode:

  • Membuat dan memperbarui MR dari deskripsi isu atau komentar
  • Menganalisis regresi kinerja dan mengusulkan optimisasi
  • Mengimplementasikan fitur langsung di cabang, kemudian membuka MR
  • Memperbaiki bug dan regresi yang diidentifikasi oleh tes atau komentar
  • Merespons komentar lanjutan untuk mengulangi perubahan yang diminta

Pengaturan

Pengaturan cepat

Cara tercepat untuk memulai adalah menambahkan pekerjaan minimal ke .gitlab-ci.yml Anda dan mengatur kunci API Anda sebagai variabel yang disamarkan.

  1. Tambahkan variabel CI/CD yang disamarkan

    • Pergi ke SettingsCI/CDVariables
    • Tambahkan ANTHROPIC_API_KEY (disamarkan, 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 merge request
  # - 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 pengaturan Anda menyediakannya
    - /bin/gitlab-mcp-server || true
    # Gunakan variabel AI_FLOW_* saat memanggil melalui pemicu web/API dengan payload 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 Anthropic API, lihat bagian Menggunakan dengan AWS Bedrock & Google Vertex AI di bawah untuk autentikasi dan pengaturan lingkungan.

Pengaturan manual (direkomendasikan untuk produksi)

Jika Anda lebih suka pengaturan yang lebih terkontrol atau membutuhkan penyedia enterprise:

  1. Konfigurasi akses penyedia:

    • Anthropic API: Buat dan simpan ANTHROPIC_API_KEY sebagai variabel CI/CD yang disamarkan
    • 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 (disamarkan) 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 event listener Anda (jika Anda menggunakannya)
    • Minta listener memanggil API pemicu pipeline dengan variabel seperti AI_FLOW_INPUT dan AI_FLOW_CONTEXT ketika komentar berisi @claude

Contoh kasus penggunaan

Ubah isu menjadi MR

Dalam komentar isu:

@claude implement this feature based on the issue description

Claude menganalisis isu dan basis kode, menulis perubahan di cabang, dan membuka MR untuk review.

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 isu 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 enterprise, Anda dapat menjalankan Claude Code sepenuhnya di infrastruktur cloud Anda dengan pengalaman developer yang sama.

Prasyarat

Sebelum mengatur 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 pengaturan

Konfigurasi AWS untuk memungkinkan pekerjaan CI GitLab mengasumsikan peran IAM melalui OIDC (tanpa kunci statis).

Pengaturan 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-minimum 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 (Anthropic 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 minimum 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 termasuk awalan khusus wilayah dan akhiran versi (misalnya, us.anthropic.claude-3-7-sonnet-20250219-v1:0). Berikan model yang diinginkan melalui konfigurasi pekerjaan atau prompt Anda jika alur kerja Anda mendukungnya.

Contoh pekerjaan Google Vertex AI (Workload Identity Federation)

Prasyarat:

  • API Vertex AI diaktifkan di proyek GCP Anda
  • Workload Identity Federation dikonfigurasi untuk mempercayai OIDC GitLab
  • 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 khusus repositori dan akun layanan privilege minimum.

Praktik terbaik

Konfigurasi CLAUDE.md

Buat file CLAUDE.md di root repositori untuk mendefinisikan standar coding, kriteria review, dan aturan khusus proyek. Claude membaca file ini selama menjalankan dan mengikuti konvensi Anda saat mengusulkan perubahan.

Pertimbangan keamanan

Jangan pernah commit kunci API atau kredensial cloud ke repositori Anda! Selalu gunakan variabel CI/CD GitLab:

  • Tambahkan ANTHROPIC_API_KEY sebagai variabel yang disamarkan (dan lindungi jika diperlukan)
  • Gunakan OIDC khusus penyedia jika memungkinkan (tanpa kunci berumur panjang)
  • Batasi izin pekerjaan dan egress jaringan
  • Review MR Claude seperti kontributor lainnya

Mengoptimalkan kinerja

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

Biaya CI

Saat menggunakan Claude Code dengan GitLab CI/CD, waspadai biaya terkait:

  • Waktu GitLab Runner:

    • Claude berjalan di GitLab runner 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 berdasarkan kompleksitas tugas dan ukuran basis kode
    • Lihat harga Anthropic untuk detail
  • Tips optimisasi biaya:

    • Gunakan perintah @claude spesifik untuk mengurangi giliran yang tidak perlu
    • Atur nilai max_turns dan timeout pekerjaan yang sesuai
    • Batasi konkurensi untuk mengontrol run paralel

Keamanan dan tata kelola

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

Pemecahan masalah

Claude tidak merespons perintah @claude

  • Verifikasi pipeline Anda dipicu (manual, peristiwa MR, atau melalui event listener/webhook catatan)
  • Pastikan variabel CI/CD (ANTHROPIC_API_KEY atau pengaturan penyedia cloud) ada dan tidak disamarkan -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
  • Konfirmasi pekerjaan berjalan dalam konteks MR atau memiliki konteks yang cukup melalui variabel AI_FLOW_*

Kesalahan autentikasi

  • Untuk Anthropic API: Konfirmasi ANTHROPIC_API_KEY valid dan belum kedaluwarsa
  • Untuk Bedrock/Vertex: Verifikasi konfigurasi OIDC/WIF, peniruan peran, dan nama rahasia; konfirmasi 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 total waktu eksekusi
  • ANTHROPIC_API_KEY: Diperlukan untuk Anthropic API (tidak digunakan untuk Bedrock/Vertex)
  • Lingkungan khusus penyedia: AWS_REGION, variabel proyek/wilayah untuk Vertex

Flag dan parameter yang tepat mungkin bervariasi berdasarkan 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: Definisikan standar coding, persyaratan keamanan, dan konvensi proyek. Claude membaca ini selama menjalankan dan mengikuti aturan Anda.
  2. Prompt kustom: Berikan instruksi khusus tugas melalui prompt/prompt_file dalam pekerjaan. Gunakan prompt yang berbeda untuk pekerjaan yang berbeda (misalnya, review, implementasi, refactor).