Setup CI/CD Claude Code: GitHub Actions aman untuk PR, deploy, dan rollback
Bangun CI/CD aman dengan Claude Code, GitHub Actions, test gate, Secrets, deploy, dan rollback.
Meminta Claude Code “buatkan CI/CD” memang cepat. YAML bisa muncul dalam beberapa menit. Masalahnya, workflow yang bisa berjalan belum tentu aman untuk produksi. Pipeline yang baik harus menghentikan Pull Request yang rusak, tidak membuka Secrets ke fork, memisahkan staging dan production, mempertahankan approval manusia untuk production, dan menyediakan rollback yang jelas.
Di panduan ini, Claude Code dipakai sebagai partner desain CI/CD, bukan generator YAML. CI berarti continuous integration: lint, type check, test, dan build berjalan saat kode berubah. CD berarti continuous delivery atau deployment: perubahan yang sudah lolos validasi masuk ke environment. Gate adalah syarat yang harus lolos sebelum job berikutnya. Secrets adalah nilai privat seperti API key atau deploy token. OIDC memberi identitas jangka pendek sehingga kita tidak perlu menyimpan cloud key jangka panjang di GitHub Secrets.
Selalu cocokkan dengan dokumentasi resmi: Claude Code GitHub Actions, GitHub Actions workflow syntax, GITHUB_TOKEN permissions, GitHub Secrets, dan GitHub Environments. Contoh di bawah memakai GitHub-hosted runner dan, per 2026-06-03, actions/checkout@v6 serta actions/setup-node@v6. Jika memakai self-hosted runner, cek versi runner lebih dulu.
Tentukan batas otomatisasi
Sebelum menulis YAML, tentukan apa yang boleh dilakukan Claude Code dan apa yang tetap keputusan manusia. Claude Code bisa membaca repository, mengusulkan workflow, meringkas log, dan memberi saran fix. Ia tidak boleh memperluas permission sendiri, memutuskan release production, mencetak Secrets, atau menjalankan kode PR yang tidak tepercaya dengan event privileged.
| Area | Cocok untuk Claude Code | Keputusan manusia |
|---|---|---|
| PR checks | Membuat lint, test, typecheck, build | Required checks dan aturan merge |
| PR review | Menandai risiko, permission, test gap | Menerima atau menolak patch |
| Deploy | Draft workflow staging dan production | Approval dan scope Secrets |
| Recovery | Merangkum log dan mengusulkan rollback | Menjalankan rollback production |
Mulai dengan prompt yang membatasi ruang gerak:
Design CI/CD for this repository.
The goals are pull request quality gates, staging deployment, Claude Code review, and production rollback.
Constraints:
- Use least-privilege GITHUB_TOKEN permissions per job.
- Do not use secrets on forked pull requests.
- If pull_request_target is suggested, explain why PR head code is not checked out.
- Put production deployment behind a GitHub Environment approval.
- Never print ANTHROPIC_API_KEY, DEPLOY_TOKEN, or other secret values.
- Produce workflow YAML that can be placed under .github/workflows/.
End with failure cases, verification commands, and rollback steps.
Prompt ini menjadi harness, yaitu kerangka kerja aman untuk agent. Untuk aturan yang dipakai berulang, simpan di CLAUDE.md; lihat CLAUDE.md best practices agar file itu tetap praktis.
Use case 1: Pull Request quality gate
Workflow pertama harus mencegah merge tanpa validasi. Contoh ini menjalankan lint, typecheck, test, dan build, lalu memakai matrix Node.js 22 dan 24.
# .github/workflows/ci.yml
name: ci
on:
pull_request:
branches: [main]
push:
branches: [main]
permissions:
contents: read
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
name: test-node-${{ matrix.node-version }}
runs-on: ubuntu-latest
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
node-version: [22, 24]
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
cache: npm
- run: npm ci
- run: npm run lint --if-present
- run: npm run typecheck --if-present
- run: npm test -- --runInBand
build:
runs-on: ubuntu-latest
timeout-minutes: 10
needs: test
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: 24
cache: npm
- run: npm ci
- run: npm run build
Untuk project Node umum yang punya npm test dan npm run build, workflow ini bisa langsung dicoba. lint dan typecheck memakai --if-present agar migrasi awal tidak macet. Setelah stabil, minta Claude Code membaca package.json dan menghapus gate palsu. Untuk strategi test yang lebih lengkap, baca testing strategies.
Use case 2: Claude Code PR review dalam mode baca
Claude Code Action bisa mengomentari risiko PR: permission GitHub Actions terlalu luas, Secrets mungkin terbuka, test kurang, rollback lemah, atau file tidak terkait ikut berubah. Mulailah dengan review komentar, bukan auto-edit.
# .github/workflows/claude-pr-review.yml
name: claude-pr-review
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
permissions:
contents: read
pull-requests: write
issues: write
concurrency:
group: claude-review-${{ github.event.pull_request.number }}
cancel-in-progress: true
jobs:
review:
if: >
github.event.pull_request.draft == false &&
github.event.pull_request.head.repo.full_name == github.repository
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
github_token: ${{ secrets.GITHUB_TOKEN }}
prompt: |
Review this pull request as a CI/CD safety reviewer.
Focus on GitHub Actions permissions, secrets exposure, test coverage,
deployment gates, rollback risk, and unrelated file changes.
Do not edit files. Leave concise review comments with evidence.
claude_args: |
--max-turns 4
Kondisi fork menjaga agar workflow yang memakai Secrets tidak berjalan pada fork eksternal. Jika ingin memeriksa PR dari kontributor luar, pisahkan static check tanpa secret dan workflow privileged yang hanya berjalan setelah approval manusia. Hati-hati dengan pull_request_target karena event itu berjalan di context repository base. Jika Claude Code menyarankannya, minta alasan, kode mana yang di-checkout, dan apakah Secrets terlihat. Untuk checklist, baca security best practices dan Git workflow.
Use case 3: deploy gate untuk staging dan production
Pola aman: push ke main otomatis deploy ke staging, sedangkan production hanya lewat workflow_dispatch dan GitHub Environment approval. Secrets production sebaiknya berada di Environment production.
# .github/workflows/deploy.yml
name: deploy
on:
push:
branches: [main]
workflow_dispatch:
permissions:
contents: read
deployments: write
concurrency:
group: deploy-${{ github.ref }}
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: 24
cache: npm
- run: npm ci
- run: npm run build
deploy-staging:
needs: build
runs-on: ubuntu-latest
timeout-minutes: 10
environment: staging
env:
APP_ENV: staging
DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: 24
cache: npm
- run: npm ci
- run: npm run deploy:staging
deploy-production:
if: github.event_name == 'workflow_dispatch'
needs: deploy-staging
runs-on: ubuntu-latest
timeout-minutes: 10
environment: production
env:
APP_ENV: production
DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: 24
cache: npm
- run: npm ci
- run: npm run deploy:production
Saat push, workflow hanya sampai staging. Production berjalan manual dan bisa meminta reviewer dari Environment. Ini mengurangi risiko bug langsung sampai ke user setelah merge.
Use case 4: siapkan rollback sebelum insiden
Rollback harus ada sebelum production bermasalah. Workflow ini redeploy commit SHA tertentu melalui approval production.
# .github/workflows/rollback-production.yml
name: rollback-production
on:
workflow_dispatch:
inputs:
target_sha:
description: "Commit SHA to redeploy to production"
required: true
type: string
permissions:
contents: read
deployments: write
jobs:
rollback:
runs-on: ubuntu-latest
timeout-minutes: 15
environment: production
steps:
- uses: actions/checkout@v6
with:
ref: ${{ inputs.target_sha }}
- uses: actions/setup-node@v6
with:
node-version: 24
cache: npm
- run: npm ci
- run: npm run build
- run: npm run deploy:production
Minta Claude Code meninjau deploy.yml dan rollback-production.yml bersama: apakah commit lama masih bisa build, apakah migration database reversible, apakah env var staging dan production berbeda, dan apakah SHA yang sedang live bisa dilacak. Untuk membaca log gagal, gunakan build error triage loop.
Pitfall yang sering terjadi
Pertama, permissions: write-all. Ini sering membuat workflow cepat jalan, tetapi memperbesar dampak saat ada masalah. Mulai dari contents: read, lalu tambah permission yang benar-benar dibutuhkan.
Kedua, mencetak Secrets ke log. Jangan menjalankan echo $DEPLOY_TOKEN. Validasi nama dan scope, bukan nilai.
Ketiga, gate palsu. --if-present berguna saat migrasi, tetapi final CI harus gagal jika script wajib tidak ada.
Keempat, mengirim log raksasa ke Claude Code. Lebih efektif berikan command pertama yang gagal, baris error pertama yang relevan, perilaku yang diharapkan, dan command reproduksi lokal.
Monetisasi dan langkah berikutnya
Topik CI/CD cocok untuk monetisasi ClaudeCodeLab karena pembaca biasanya ingin mengurangi risiko produksi. Developer solo bisa mulai dari ClaudeCodeLab products untuk CLAUDE.md, prompt review, dan checklist CI. Tim yang perlu menerapkan branch protection, GitHub Actions, Secrets, approval, rollback, dan Claude Code review pada repository nyata sebaiknya mulai dari training and consultation.
Lanjutkan dengan Advanced GitHub Actions with Claude Code, testing strategies, dan security best practices. Secara praktis, langkah pertama terbaik bukan full production auto-deploy, melainkan PR quality gate dan Claude Code review mode baca. Setelah tim terbiasa membaca failure dan review evidence, baru tambahkan staging, production approval, dan rollback.
PDF gratis: cheatsheet Claude Code
Masukkan email dan unduh satu halaman berisi command, kebiasaan review, dan workflow aman.
Kami menjaga datamu dan tidak mengirim spam.
Tentang penulis
Masa
Engineer yang berfokus pada workflow Claude Code praktis dan adopsi tim.
Artikel terkait
Permission receipt Claude Code: mencatat scope, bukti, dan rollback
Pola permission receipt untuk Claude Code: aksi yang diizinkan, batas approval, command verifikasi, rollback, dan cek CTA revenue.
Agent Harness Aman untuk Claude Code dan Codex: Permission, Verifikasi, dan Rollback
Rancang Agent Harness praktis untuk Claude Code dan Codex dengan policy, plan, verification, dan recovery layer.
Subagent Claude Code: panduan praktis untuk delegasi artikel dan kode
Panduan subagent Claude Code untuk membagi pekerjaan artikel dan kode: aturan delegasi, prompt, risiko, dan checklist.