CodeBlanks Logo Icon CodeBlanks

matrix

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

terminal
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

terminal
cat << 'EOF' > .github/workflows/ci.yml
jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [18, 20]
EOF

cat .github/workflows/ci.yml

Beklenen çı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

Soru
    strategy:
      ____:
        node: [18, 20]
Cevap
    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

İleri seviye bölümündeki tüm dersler