Modül 6 · Modül 6 — Domain 6: GitHub Actions Automation & Policies · ⏱ 10-15 dakika

Reusable Workflows ve Composite Actions

Reusable Workflows & Composite Actions

Bu derste neler öğreneceksin

  • Reusable workflow ile composite action arasındaki farkı açıklamak
  • Reusable workflow'u başka bir workflow'dan çağırmayı bilmek
  • Enterprise genelinde standart CI/CD workflow'larını merkezi yönetmeyi anlamak

Reusable workflows ve composite actions, GitHub Actions’da kod tekrarını önlemenin iki farklı yoludur. GH-100, bunların kurumsal ortamda merkezi yönetimini sınar.

Reusable Workflow

Bir workflow başka bir workflow tarafından çağrılabilir. Bu, merkezi CI/CD şablonları oluşturmaya yarar.

# .github/workflows/deploy.yml (reusable workflow)
on:
  workflow_call:
    inputs:
      environment:
        required: true
        type: string
    secrets:
      deploy-token:
        required: true

Çağıran workflow:

jobs:
  deploy-prod:
    uses: myorg/shared-workflows/.github/workflows/deploy.yml@main
    with:
      environment: production
    secrets:
      deploy-token: ${{ secrets.DEPLOY_TOKEN }}

Composite Action

Birden fazla step’i tek bir custom action altında toplar:

# action.yml
name: "Setup Node Environment"
runs:
  using: "composite"
  steps:
    - uses: actions/setup-node@v4
      with:
        node-version: "20"
    - run: npm ci
      shell: bash

Farklar

Reusable WorkflowComposite Action
Ne içerir?Tam job’larStep’ler
Nasıl çağrılır?uses: org/repo/.github/workflows/x.ymluses: org/repo/path@version
Runner seçimiHer job kendi runner’ını seçerÇağıran job’ın runner’ını kullanır
Secret geçişisecrets: bloğu ileinputs: ile (maskelenmez dikkat!)

Merkezi Workflow Yönetimi

Büyük organizasyonlarda önerilen yapı:

myorg/
  shared-workflows/
    .github/workflows/
      lint.yml       (reusable)
      test.yml       (reusable)
      deploy.yml     (reusable)
  repo-a/
    .github/workflows/ci.yml  → shared-workflows kullanır
  repo-b/
    .github/workflows/ci.yml  → shared-workflows kullanır

Bu pattern ile CI/CD politikasını merkezi güncelleyebilirsin.

Reusable Workflow Erişim Kontrolü

Organization → Settings → Actions → General
→ "Allow reusable workflows from {specific orgs/repos}"

Enterprise düzeyinde: Yalnızca onaylanmış org/shared-workflows repository’sinden reusable workflow kullanılmasına izin verilebilir.