Monorepo'lar için CI/CD
Değiştirilen dosyalara göre seçici iş yürütme dahil olmak üzere monorepo'larda CI/CD işlem hatlarını iyileştirme stratejilerini keşfedin.
Monorepo'lar için CI/CD, CoddyKit'te ücretsiz bir CI/CD with GitHub Actions & DevOps Pipelines dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, CI/CD with GitHub Actions & DevOps Pipelines öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. CI/CD with GitHub Actions & DevOps Pipelines kursu toplamda 4 dersten oluşur.
Monorepo Nedir?
Bir monorepo, birçok projenin veya uygulamanın kodunu barındıran tek bir depodur. Her hizmet veya kitaplık için ayrı depolar kullanmak yerine her şey birlikte bulunur.
Bunu, her kitap için ayrı bir bina yerine, birçok kitabın (projenin) tek bir binadaki (depodaki) büyük bir kütüphanede bulunmasına benzetebilirsiniz. Bu yaklaşımın özellikle CI/CD açısından avantajları ve dezavantajları vardır.
Monorepo CI/CD Zorlukları
Monorepo'lar daha kolay kod paylaşımı gibi avantajlar sunsa da Sürekli Entegrasyon/Sürekli Teslim (CI/CD) işlem hatları açısından zorluklar oluşturabilir:
- Yavaş Derlemeler: Her değişiklik *tüm* projeler için tam bir derlemeyi ve test paketini tetiklerse işlem hatları çok yavaşlar.
- Kaynak İsrafı: İlgisiz işleri gereksiz yere çalıştırmak derleme dakikalarını ve kaynakları tüketir.
- Geliştirici Hayal Kırıklığı: Uzun geri bildirim döngüleri geliştirme hızını yavaşlatabilir.
Seçici CI/CD Gereksinimi
Verimli monorepo CI/CD'nin anahtarı seçiciliktir. İşlem hatlarımız şu işlemleri yapabilecek kadar akıllı olmalıdır:
- Neyin değiştiğini belirlemek.
- CI/CD işlerini yalnızca bu değişikliklerden etkilenen projeler için çalıştırmak.
Bu yaklaşım zamandan tasarruf sağlar, kaynak tüketimini azaltır ve geliştiricilere daha hızlı geri bildirim sunar.
Yollara Göre Tetikleme: `on.paths`
GitHub Actions, iş akışı tetikleyicilerindeki paths süzgecini kullanarak seçiciliği sağlamanın güçlü bir yolunu sunar. Değiştirildiğinde bir iş akışını tetiklemesi gereken dizinleri veya dosyaları belirtebilirsiniz.
Bu yolların dışındaki bir dosya değişirse iş akışı çalışmaz. Bu, monorepo'lar için idealdir!
on:
push:
branches:
- main
paths:
- 'apps/frontend/**'
- 'libs/shared/**'Uygulamada Yollar Süzgeci
Değişiklikler yalnızca apps/backend dizinindeki dosyalara veya belirli bir README.md dosyasına gönderildiğinde çalışan basit bir iş akışı aşağıda verilmiştir.
Bu, arka uç hizmetiniz için yalnızca ilgili testlerin veya derlemelerin tetiklenmesini sağlar.
name: Backend CI
on:
push:
branches:
- main
paths:
- 'apps/backend/**'
- 'README.md'
jobs:
build-backend:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build backend app
run: echo "Building backend..."Yolları Yoksayma: `paths-ignore`
Bazen iş akışının *çoğu* değişiklikte çalışmasını, ancak yalnızca belirli dosyalar değiştirildiyse (örneğin belgeler veya günlük dosyaları) çalışmamasını istersiniz. paths-ignore süzgeci bunun için idealdir.
Bu süzgeç paths'e benzer şekilde çalışır, ancak iş akışını *tetiklememesi* gereken dosyaları belirtir.
on:
pull_request:
branches:
- main
paths-ignore:
- 'docs/**'
- '**/*.md'`git diff` ile Dinamik Seçici Çalıştırmalar
Daha karmaşık mantıklar için iş akışı adımlarınızda git diff gibi Git komutlarını kullanarak değişiklikleri dinamik biçimde denetleyebilirsiniz. Bu, özel koşullar oluşturmanıza olanak tanır.
Örneğin belirli bir klasörde değişiklik olup olmadığını denetleyebilir ve sonraki bir işin çalışıp çalışmayacağına karar vermek üzere bir çıktı değişkeni ayarlayabilirsiniz.
Koşullu İş Yürütme Örneği
Bu iş akışı adımı, mevcut işleme ile temel dal arasındaki apps/api/ altındaki dosyalarda herhangi bir değişiklik olup olmadığını görmek için git diff kullanır. Değişiklik varsa api_changed çıktı değişkenini 'true' olarak ayarlar.
Bu çıktı daha sonra 'deploy API' işinin çalışıp çalışmayacağını denetleyebilir.
jobs:
check-changes:
runs-on: ubuntu-latest
outputs:
api_changed: ${{ steps.diff.outputs.api_changed }}
steps:
- uses: actions/checkout@v4
- name: Check API changes
id: diff
run: |
if git diff --quiet ${{ github.event.before }} ${{ github.sha }} -- apps/api/;
then
echo "api_changed=false" >> $GITHUB_OUTPUT
else
echo "api_changed=true" >> $GITHUB_OUTPUT
fi
deploy-api:
needs: check-changes
if: needs.check-changes.outputs.api_changed == 'true'
runs-on: ubuntu-latest
steps:
- name: Deploy API
run: echo "Deploying API..."CI/CD için Monorepo Yapısı
Düzenli bir monorepo yapısı, seçici CI/CD'yi büyük ölçüde basitleştirir. İlgili dosyaları ve projeleri iyi tanımlanmış dizinlerde gruplamak, paths süzgeçlerini etkili biçimde kullanmayı kolaylaştırır.
/apps/frontend/apps/backend/libs/shared/docs
Açık bir ayrım, iş akışlarının hassas biçimde hedeflenmesini sağlar.
Monorepo CI/CD Bilgi Yoklaması
Monorepo'lar için CI/CD'yi iyileştirmek, geliştirici hızını ve kaynakların verimli kullanımını korumak açısından kritik öneme sahiptir. Büyük ve birleştirilmiş bir kod tabanının zorluklarını en iyi hangi stratejilerin ele alacağını düşünün.
Özet ve Sonraki Adımlar
Seçici iş yürütme uygulayarak monorepo'lardaki CI/CD zorluklarının üstesinden gelmeyi öğrendiniz. GitHub Actions'ın paths süzgeçlerini ve gelişmiş git diff tekniklerini kullanarak işlem hatlarınızın yalnızca gerekli işlemleri çalıştırmasını sağlayabilirsiniz.
Bu, daha hızlı geri bildirim, daha düşük maliyetler ve daha sorunsuz bir geliştirme deneyimi sağlar. Daha da yüksek verimlilik için iş akışlarınızı nasıl hassaslaştırabileceğinizi keşfetmeye devam edin!
Sıkça Sorulan Sorular
“Monorepo'lar için CI/CD” dersi ücretsiz mi?
Evet — “Monorepo'lar için CI/CD” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve CI/CD with GitHub Actions & DevOps Pipelines kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. CI/CD with GitHub Actions & DevOps Pipelines kursu toplamda 4 dersten oluşur.
“Monorepo'lar için CI/CD” dersinde ne öğreneceğim?
Değiştirilen dosyalara göre seçici iş yürütme dahil olmak üzere monorepo'larda CI/CD işlem hatlarını iyileştirme stratejilerini keşfedin. CI/CD with GitHub Actions & DevOps Pipelines ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
CI/CD with GitHub Actions & DevOps Pipelines öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te CI/CD with GitHub Actions & DevOps Pipelines, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Monorepo'lar için CI/CD” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu CI/CD with GitHub Actions & DevOps Pipelines dersinde kod yazıp çalıştırabilir miyim?
Evet. Her CI/CD with GitHub Actions & DevOps Pipelines dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Monorepo'lar için CI/CD
- Depolar Arası İş Akışları
- Merkezi İş Akışı Yönetimi
- Yol Filtreleme ve Seçmeli Derlemeler