Conditional Keywords For Steps
GitHub Actions’da Koşullu (Conditional) Çalıştırma özelliği, bir işin (job) ya da bir adımın (step) yalnızca belirli bir koşul sağlandığında çalıştırılmasını sağlar.
Örnek 1: Commit Mesajında “release” Geçiyorsa deploy Job’u Çalıştır
Bu senaryoda, deploy
isimli job, sadece commit mesajında “release” kelimesi geçiyorsa devreye girecek. Örneğin sürüm yükseltmesi (release) yaptığında otomatik deploy olsun, aksi hâlde atlanacak.
name: conditional-jobs-example
on:
push:
branches: [ "main" ] # main branch'e push olduğunda
jobs:
deploy:
if: ${{ contains(github.event.head_commit.message, 'release') }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Run deployment script
run: echo "Deploy işlemi yapılıyor..."
Ne oluyor?
github.event.head_commit.message
→ Son commit mesajı.contains(...)
ifadesiyle “release” kelimesi geçiyor mu diye bakıyoruz.Eğer
true
dönerse, job çalışır;false
ise job “skipped” olur.
Örnek 2: Yalnızca Prod Ortamına Ait Repoda Deploy Job’u Çalıştır
name: deploy-to-prod-repo
on: [push]
jobs:
prod-deploy:
if: ${{ github.repository == 'my-org/my-repo-prod' }}
runs-on: ubuntu-latest
steps:
- run: echo "Bu job yalnızca my-org/my-repo-prod isimli repoda çalışacak."
Ne oluyor?
github.repository
→ “OrganizasyonAdı/RepoAdı” şeklinde bir string.Koşul sağlanmazsa job hiç başlamıyor.
Örnek 3: Matris (Matrix) Yapısında Belirli Bir OS İçin Ek Adım Çalıştırma
Diyelim ki matrix ile Ubuntu, Windows ve Mac üzerinde build yapıyorsun. Bazı adım sadece Ubuntu’da çalışsın istiyorsan şöyle yapabilirsin:
name: matrix-conditional-example
on: [push]
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Ubuntu-specific step
if: ${{ matrix.os == 'ubuntu-latest' }}
run: echo "Bu adım sadece ubuntu-latest üzerinde çalışacak."
Ne oluyor?
Job aynı anda 3 farklı işletim sisteminde çalışır.
Ubuntu-specific step
,if
koşulu yüzünden yalnızca Ubuntu build’ında çalışır, Windows ve Mac’te atlanır.
Last updated
Was this helpful?