GitHub Actions ile ilk CI hattı: her gönderimde testleri otomatik çalıştırmak
Sürekli entegrasyon (CI), koda yapılan her değişiklikte testlerin ve derlemenin otomatik çalışmasıdır. "Bende çalışıyordu" sorununu büyük ölçüde ortadan kaldırır ve hatalar ana dala girmeden yakalanır. GitHub kullanıyorsan GitHub Actions ile birkaç dakikada başlayabilirsin.
İlk iş akışı
Depoda .github/workflows/ci.yml dosyası oluştur. Node.js projesi için örnek:
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- run: npm ci
- run: npm run lint
- run: npm test
Dosyayı gönderdiğinde deponun Actions sekmesinde çalışmayı görürsün. Bir adım başarısız olursa hangi satırda hata verdiği kayıtlarda görünür. Python, Java, PHP gibi diller için de benzer setup-* adımları vardır; kullandığın eylemlerin güncel sürüm numaralarını kendi dokümantasyonlarından kontrol et.
Önerilen adımlar
- Bağımlılık kurulumu:
npm installyerinenpm cikilit dosyasına sadık kalır ve daha tutarlıdır. - Lint / biçim kontrolü: Basit hataları hızlıca yakalar.
- Testler
- Derleme: Uygulama derlenebiliyor mu?
Hızlı başarısız olan adımları öne koy; lint hatası varsa uzun testleri beklemeye gerek kalmaz.
Gizli bilgiler
API anahtarı ya da dağıtım şifresi gerekiyorsa dosyaya asla yazma. Depo ayarlarında Settings → Secrets and variables → Actions bölümünden ekle ve iş akışında şöyle kullan:
env:
API_KEY: ${{ secrets.API_KEY }}
Fork'lardan gelen pull request'lerde gizli bilgilerin varsayılan olarak paylaşılmadığını unutma; bu bir güvenlik önlemidir.
Ana dalı koru
Settings → Branches (ya da Rulesets) bölümünden ana dal için "CI başarılı olmadan birleştirme yapılamasın" kuralı ekle. Böylece testi geçmeyen kod main'e giremez.
Dağıtım (CD) adımı
CI oturduktan sonra testler geçtiğinde otomatik dağıtım ekleyebilirsin: statik siteyi yayınlamak, Docker imajı derleyip kayıt deposuna göndermek ya da sunucuya SSH ile bağlanıp güncellemek gibi. Üretim ortamına otomatik dağıtım yapacaksan önce test ortamında denemek ve geri alma (rollback) yolunu belirlemek iyi bir alışkanlıktır.
Maliyet
Açık (public) depolarda standart çalıştırıcılar ücretsizdir; özel (private) depolarda aylık ücretsiz dakika kotası vardır. Güncel kotaları GitHub'ın faturalandırma sayfasından kontrol et. Gereksiz yere her dalda ağır iş akışı çalıştırmamak kotayı korur.
Kendi iş akışın hata veriyorsa YAML dosyasını ve hata kaydını (gizli bilgileri çıkararak) bu konunun altına ekleyebilirsin.