Github Actions #8 matrix strategy
name: Matrix Demo
on: push
jobs:
build:
continue-on-error: true
strategy:
matrix:
node-version: [12,14,16]
operating-system: [ubuntu-latest,windows-latest]
runs-on: ${{ matrix.operating-system }}
steps:
- name: Get Code
uses: actions/checkout@v3
- name: Install NodeJS
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Install Dependencies
run: npm ci
- name: Build Project
run: npm run build
Bazı durumlarda, uygulamalarımızı farklı işletim sistemlerinde ve farklı geliştirici versiyonlarında derleyerek testini yapmak istediğimiz zamanlar olabilir. Bununla ilgili bize matrix strategy yardımcı olmaktadır.
Özetle,
“matrix” özelliği, bir iş akışının birden fazla değişken kombinasyonu üzerinde çalışmasını sağlar. Bu, iş akışının birden fazla farklı ortamda veya koşullarda çalıştırılmasını mümkün kılar. Örneğin, yukarıdaki örnekte, “node-version” değişkeni için 3 farklı değer ve “operating-system” değişkeni için 2 farklı değer belirtilmiştir. Bu, iş akışının toplam 6 (3 x 2) farklı çalıştırılması anlamına gelir. Bu sayede, iş akışı farklı NodeJS sürümleri ve farklı işletim sistemlerinde test edilebilir.
Bu yöntem, iş akışının birden fazla farklı koşulda çalıştırılmasını sağlar ve böylece iş akışının farklı ortamlarda nasıl çalıştığı hakkında daha fazla veri toplamasına yardımcı olur.
continue-on-error: true
seçeneği, iş akışının bir adımında bir hata oluştuğunda iş akışının diğer adımlarını yine de çalıştırmasını sağlar.
Yukarıdaki iş akışını çalıştırdığımızda actions şu şekilde görünür;

name: Matrix Demo
on: push
jobs:
build:
continue-on-error: true
strategy:
matrix:
node-version: [12,14,16]
operating-system: [ubuntu-latest,windows-latest]
include:
- node-version: 18
operating-system: ubuntu-latest
exclude:
- node-version: 12
operating-system: windows-latest
runs-on: ${{ matrix.operating-system }}
steps:
- name: Get Code
uses: actions/checkout@v3
- name: Install NodeJS
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Install Dependencies
run: npm ci
- name: Build Project
run: npm run build
Eğer dilersek, matrix değişkenlerine “include” ve “exclude” parametreleri ile yeni değerler verebiliriz.
Misal yukarıdaki örnekte,
“include” parametresine node-version ve operating-system argümanlarına belirli değerler verdik. Bu nedenle bu iş akışı çalışırken matrix burada “include” parametresine verdiğimiz değerleride baz alacak.
“exclude” parametresi ise, iş akışı çalışırken, birlikte çalışmasını istemediğimiz, node-version ve operating-system argümanlarını belirttik. Bu sayede “exclude” içerisinde verdiğimiz argümanlar, iş akışı çalıştığı sırada göz ardı edilecek.
Yukarıdaki iş akışını çalıştırdığımız actions durumu şu şekilde olacaktır;

Yukarıdaki görselde gördüğünüz üzere, node-version:12 ve operating-system: windows-latest değerleri exclude edildiği için, iş akışı içerisinde çalıştırılmamış.
Aynı şekilde, node-version:18 ve operating-system: ubuntu-latest değerleri include ettiğimiz için, iş akışı içerisine dahil edilip, çalıştırılmış.