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?