Modül 4 · Modern development · ⏱ 15 dakika

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

KavramAçıklama
Workflow.github/workflows/*.yml dosyası — otomasyon tanımı
Event (trigger)Workflow’u başlatan olay (push, PR, schedule)
JobWorkflow içinde bağımsız çalışan birim; runner’da koşar
StepJob içindeki tek komut veya action
ActionYeniden kullanılabilir adım (marketplace’ten veya lokal)
RunnerJob’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

EventAçıklama
pushBranch’e push yapılınca
pull_requestPR açılınca, güncellenince, kapatılınca
scheduleCron syntax ile periyodik (UTC zaman dilimi)
workflow_dispatchManuel tetikleme (UI veya API)
releaseRelease yayınlanınca
issuesIssue açıldığında, kapatıldığında
workflow_callBaş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 — Windows
  • macos-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 .yml veya .yaml uzantılı olmalı
  • on: kısmı trigger’ı tanımlar — on: push ve on: [push, pull_request] her ikisi geçerli
  • runs-on zorunlu — runner belirtilmeli
  • Actions versiyonlama önemli: @v4 yerine @main veya SHA kullanmak güvenlik açısından önerilmez
  • workflow_dispatch ile 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.