
GitHub Actions ile İlk CI/CD Pipeline'ın
2026-07-05 · 11 dk okuma
CI/CD, kod değişikliklerini otomatik olarak test edip yayına hazırlayan bir uygulamadır. CI (Continuous Integration) her commit'te kodu derleyip testleri koşar; CD (Continuous Delivery/Deployment) geçen kodu otomatik dağıtır. Amaç: hataları erken yakalamak ve elle yapılan tekrarlı işleri ortadan kaldırmak.
GitHub Actions nasıl çalışır?
Depona .github/workflows/ altına bir YAML dosyası koyarsın. Bu dosya, belirli olaylarda (push, pull request vb.) çalışacak işleri (jobs) ve adımları (steps) tanımlar. GitHub bu işleri kendi sunucularında (runner) çalıştırır.
Çalışan bir örnek
Her push'ta bağımlılıkları kurup testleri çalıştıran minimal bir workflow:
name: CI
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npm testTemel kavramlar
- workflow: tüm otomasyonu tanımlayan YAML dosyası
- job: paralel veya sıralı çalışan iş birimi
- step: bir job içindeki tek komut veya action
- action: yeniden kullanılabilir hazır adım (örn. checkout)
- runner: işleri çalıştıran sanal makine
Sonraki adım
Test geçince otomatik build alıp bir bulut servisine (örn. Cloud Run, S3, Vercel) deploy eden bir job ekleyerek CD'yi tamamlarsın. Secret'ları GitHub Secrets'ta tut, asla YAML'a yazma.
Pipeline yeşil olana kadar: failing build'i debug et
İlk pipeline'lar nadiren ilk seferde yeşil yanar. En sık görülen kırmızı ve çözümleri:
# Actions log'unda:Run npm cinpm error: The `npm ci` command can only install with an existing package-lock.json# → repo'da package-lock.json yok. Çözüm: 'npm ci' yerine 'npm install' ya da lock'ı commit'le.Run npm testsh: 1: jest: not found# → dev bağımlılığı kurulmamış. Çözüm: setup-node cache + 'npm ci' (devDependencies dahil).
- 1Kırmızı job'a tıkla → hatalı step'i genişlet, tam mesajı oku
- 2Hata 'yerelde çalışıyordu' ise: runner temiz bir ortam — eksik lockfile/env/secret şüphelen
- 3Secret gereken adım mı? ${{ secrets.X }} tanımlı mı kontrol et (log'da maskeli görünür)
- 4Düzelt, push et, job'un yeşile döndüğünü doğrula
Dikkat
Yaygın hata: API anahtarını YAML'a düz yazmak. Actions log'ları ve fork PR'ları bunu sızdırır. Her zaman GitHub Secrets kullan; pull_request tetikleyicisinde secret'ların fork'lara AKMADIĞINI da unutma.
Mini görev
Küçük bir repoda yukarıdaki CI workflow'unu kur. Kasıtlı olarak testi bozan bir commit at → kırmızı job'u ve log'u incele. Sonra düzelt, yeşile döndür. Bonus: setup-node cache ekleyip ikinci koşunun süresini karşılaştır.
Uygulamalı görev — tarayıcıda dene
Bu akışları gerçek bir repoda kurup çalıştırmak öğrenmenin en hızlı yolu — Cloudpuz'un CI/CD lab'ları bunu hands-on yaşatıyor.
Resmi kaynaklar
Son doğrulama: 2026-07-17
Sıkça Sorulan Sorular
CI/CD nedir?
CI/CD, kod değişikliklerini otomatik olarak test edip yayına hazırlayan bir uygulamadır. CI (Continuous Integration) her commit'te kodu derleyip testleri koşar; CD (Continuous Delivery/Deployment) ise geçen kodu otomatik olarak dağıtır. Amacı hataları erken yakalamak ve elle yapılan tekrarlı işleri ortadan kaldırmaktır.
GitHub Actions nasıl çalışır?
Deponun içine `.github/workflows/` altına bir YAML dosyası koyarsın. Bu dosya, push veya pull request gibi belirli olaylarda çalışacak işleri (jobs) ve adımları (steps) tanımlar. GitHub bu işleri kendi sunucularında, yani runner'larda çalıştırır.
GitHub Actions'ta workflow, job, step, action ve runner ne demek?
workflow tüm otomasyonu tanımlayan YAML dosyasıdır; job paralel veya sıralı çalışan bir iş birimidir; step bir job içindeki tek bir komut veya action'dır. action yeniden kullanılabilir hazır bir adımdır (örneğin checkout), runner ise işleri çalıştıran sanal makinedir.
GitHub Actions'ta API anahtarı ve secret nasıl saklanır?
Secret'lar her zaman GitHub Secrets'ta tutulmalı, asla YAML dosyasına düz yazılmamalıdır; aksi halde Actions log'ları ve fork PR'ları anahtarı sızdırabilir. Workflow içinde `${{ secrets.X }}` ile erişilir ve log'da maskeli görünür. Ayrıca pull_request tetikleyicisinde secret'lar fork'lara akmaz.
GitHub Actions'ta 'npm ci can only install with an existing package-lock.json' hatası nasıl çözülür?
Bu hata repoda `package-lock.json` dosyasının bulunmadığını gösterir. Çözüm olarak ya `npm ci` yerine `npm install` kullanılır ya da lock dosyası commit edilir. Benzer şekilde 'jest: not found' hatası dev bağımlılıklarının kurulmadığını gösterir; setup-node cache ile `npm ci` kullanmak devDependencies dahil kurulumu sağlar.
Okumak yetmez — dene.
Bu konuları tarayıcıda gerçek terminalde uygula.