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 Workflow | Composite Action | |
|---|---|---|
| Ne içerir? | Tam job’lar | Step’ler |
| Nasıl çağrılır? | uses: org/repo/.github/workflows/x.yml | uses: org/repo/path@version |
| Runner seçimi | Her job kendi runner’ını seçer | Çağıran job’ın runner’ını kullanır |
| Secret geçişi | secrets: bloğu ile | inputs: 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.