GitHub Actions ve workflow temelleri
GitHub Actions and workflow fundamentals
Bu derste neler öğreneceksin
- GitHub Actions'ın temel kavramlarını (workflow, job, step, runner) açıklamak
- YAML sözdizimini okumak ve temel workflow yazmak
- Trigger event tiplerini (push, pull_request, schedule, workflow_dispatch) bilmek
- Actions marketplace ve reusable actions'ı tanımak
GitHub Actions, GitHub’a entegre CI/CD ve otomasyon platformudur. Push, PR, schedule gibi olaylarla tetiklenen workflow’lar çalıştırır. GH-900 sınavı Actions’ın temel kavramlarını ve YAML syntax’ını sorar.
Temel kavramlar
| Kavram | Açıklama |
|---|---|
| Workflow | .github/workflows/*.yml dosyası — otomasyon tanımı |
| Event (trigger) | Workflow’u başlatan olay (push, PR, schedule) |
| Job | Workflow içinde bağımsız çalışan birim; runner’da koşar |
| Step | Job içindeki tek komut veya action |
| Action | Yeniden kullanılabilir adım (marketplace’ten veya lokal) |
| Runner | Job’ları çalıştıran sanal makine (GitHub-hosted veya self-hosted) |
Temel workflow yapısı
# .github/workflows/ci.yml
name: CI Pipeline
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
Trigger event tipleri
| Event | Açıklama |
|---|---|
push | Branch’e push yapılınca |
pull_request | PR açılınca, güncellenince, kapatılınca |
schedule | Cron syntax ile periyodik (UTC zaman dilimi) |
workflow_dispatch | Manuel tetikleme (UI veya API) |
release | Release yayınlanınca |
issues | Issue açıldığında, kapatıldığında |
workflow_call | Başka workflow tarafından çağrıldığında |
# Schedule örneği — her gün 06:00 UTC'de
on:
schedule:
- cron: '0 6 * * *'
# workflow_dispatch — manuel, parametre destekli
on:
workflow_dispatch:
inputs:
environment:
description: 'Deploy environment'
required: true
default: 'staging'
Runner’lar
GitHub-hosted runners:
ubuntu-latest— Ubuntu (en yaygın)windows-latest— Windowsmacos-latest— macOS
Self-hosted runners: Kendi sunucunda GitHub Actions job’ları çalıştırır. Daha fazla kontrol, maliyet tasarrufu, özel donanım için.
Actions marketplace
github.com/marketplace — binlerce hazır action. Yaygın kullanılanlar:
# actions/checkout — repo kodu al
- uses: actions/checkout@v4
# actions/setup-node — Node.js kur
- uses: actions/setup-node@v4
with:
node-version: '20'
# actions/upload-artifact — dosya sakla
- uses: actions/upload-artifact@v4
with:
name: build-output
path: dist/
# actions/cache — bağımlılıkları cache'le
- uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
Secrets ve environment variables
Hassas bilgiler (token, API key) repo veya org Settings → Secrets’ta saklanır:
steps:
- name: Deploy
run: ./deploy.sh
env:
API_TOKEN: ${{ secrets.DEPLOY_TOKEN }}
NODE_ENV: production
Job bağımlılıkları
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: npm run build
test:
runs-on: ubuntu-latest
needs: build # build bitmeden test başlamaz
steps:
- run: npm test
deploy:
needs: [build, test] # ikisi de bitmeli
steps:
- run: ./deploy.sh
Sınav perspektifinden dikkat noktaları
- Workflow dosyaları
.github/workflows/altında.ymlveya.yamluzantılı olmalı on:kısmı trigger’ı tanımlar —on: pushveon: [push, pull_request]her ikisi geçerliruns-onzorunlu — runner belirtilmeli- Actions versiyonlama önemli:
@v4yerine@mainveya SHA kullanmak güvenlik açısından önerilmez workflow_dispatchile manuel tetikleme web UI’dan veya CLI ile yapılabilir
Sırada ne var?
Sonraki derste GitHub Pages ile statik site yayınlamayı öğreneceğiz.