matrix
- Git kursu
- İleri seviye
- Ders 41/56
- 4 dk
Matrix stratejisi ile çok sürüm test öğrenirsin.
Matrix stratejisi nedir?
GitHub Actions'ta strategy.matrix, aynı işi (job) farklı değişken kombinasyonlarıyla paralel olarak çalıştırmayı sağlar. Örneğin uygulamanı hem Node.js 18 hem de Node.js 20 sürümlerinde test etmek için ayrı işler yazmak yerine tek bir matris tanımlarsın. GitHub Actions her sürüm için otomatik olarak bağımsız bir sanal makinede ayrı bir iş başlatır.
strategy:
matrix:
node-version: [18, 20, 22]Bu sayede çoklu platform ve sürüm desteğini minimum kod tekrarıyla sınarsın.
Çok boyutlu matris ve fail-fast
Matris içinde birden fazla değişken tanımlandığında kartezyen çarpım uygulanarak tüm olasılıklar çalıştırılır. Örneğin 2 işletim sistemi ve 3 dil sürümü tanımlandığında toplam 6 bağımsız iş paralel başlar. Ayrıca fail-fast: false ayarıyla bir varyasyonda hata çıksa bile diğer sürümlerin testlerinin tamamlanması sağlanır.
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
node: [18, 20]Böylece bir ortamda başarısızlık yaşansa dahi diğer ortamların durumu eksiksiz gözlemlenir.
Uygulama Matrix yapılandırmasını oluştur
İş akışındaki strategy bloğuna matrix: altında node-version: [18, 20] tanımını ekle.
Başlangıç kodu
cat << 'EOF' > .github/workflows/ci.yml
jobs:
test:
runs-on: ubuntu-latest
strategy:
# matris ayarini buraya ekle
EOF
cat .github/workflows/ci.ymlÖrnek çözüm
cat << 'EOF' > .github/workflows/ci.yml
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20]
EOF
cat .github/workflows/ci.ymlBeklenen çıktı
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18, 20]
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 GitHub Actions iş akışlarında strategy.matrix kullanmanın temel amacı nedir?
- Aynı işi farklı sürüm veya işletim sistemlerinde paralel koşturmak Doğru cevap
- Depodaki tüm commit geçmişini tek satırda özetlemek
- Gizli API anahtarlarını şifreleyerek depoda saklamak
- Dallanma çakışmalarını otomatik olarak çözmek
Açıklama: matrix, tanımlanan değişken listelerindeki her bir eleman için işi paralel ve bağımsız olarak koşturur.
2 Matrix stratejisini tanımla
strategy:
____:
node: [18, 20]
strategy:
matrix:
node: [18, 20]
Açıklama: strategy bloğu altında çoklu sürüm kombinasyonlarını belirtmek için matrix anahtarı kullanılır.
3 Matrix kavramları
| Kavram | Anlamı |
|---|---|
strategy.matrix |
Çoklu sürüm ve platform matrisi |
fail-fast: false |
Hata olsa da diğer işleri sürdürür |
Kartezyen çarpım |
Tüm matris değişkenlerini eşler |
matrix.<degisken> |
Adım içinde matris değerini okur |