GitHub Actions ile CI/CD
CI CD with GitHub Actions
Bu derste neler öğreneceksin
- .github/workflows YAML yazar
- Test + lint + build step i tanımlar
- Kestra Git sync ile entegre eder
Robot Sağ Kolun
Kodunu yazdın, GitHub’a yükledin. Ama biri “Ya bozulduysa?” diye soruyor. İşte GitHub Actions: GitHub’da her push’ta otomatik test çalıştıran bir robot. Sana sağ kol gibi.
# .github/workflows/test.yml
name: Test
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- run: pip install -r requirements.txt
- run: pytest tests/
Bu dosyayı repo’ya koyduğun an, her git push yaptığında GitHub otomatik:
- Kodunu indirir
- Python 3.11 kurar
requirements.txt’i yüklerpytest tests/çalıştırır
Yeşil tik = geçti. Kırmızı X = bozuldu, ekrana hata basar.
CI/CD Ne Demek?
- CI (Continuous Integration): Kod her geldiğinde test/lint çalışsın.
- CD (Continuous Deployment): Test geçtiyse otomatik olarak canlıya alınsın.
Bizim limonata dükkânında: Kestra’daki flow dosyaları GitHub’da duruyor, her değişiklikte test çalışıyor, sonra Kestra otomatik yeni sürümü çekiyor.
Kestra Git Sync
Kestra’nın güzel yanı: flow’ları GitHub’da tutabilirsin. Kestra, her X dakikada bir GitHub’dan flows/ klasörünü çeker:
# kestra config
kestra:
git:
url: https://github.com/senin/lemonade-flows.git
branch: main
path: flows/
interval: 60s
Artık flow değiştirmek demek: VS Code’da YAML’ı düzenle, git push. Kestra 60 saniye içinde yeni sürümü çeker, schedule aktifse tetikler. Tam CD.
Bugün Yaptık
- GitHub Actions’ın temel YAML yapısını öğrendik
- CI/CD kavramını gördük (test + otomatik dağıtım)
- Kestra Git sync ile flow’ları GitHub’dan çektik
Ellerini Kirlet
lemonade-flowsadında yeni bir GitHub repo oluştur.- Yukarıdaki
test.ymlworkflow’unu ekle,git pushyap. - GitHub’da Actions sekmesine git, çalışan işi gör.
- İçine sahte bir test ekle (
tests/test_smoke.py), boz, kırmızı X’i gör, düzelt, yeşil tik’i gör.
Sıradaki
Bir sonraki ders: Robot egzersizi — pipeline’ı kağıtta yaz →