GitHub Actions — agent'ın yürütme ortamı
GitHub Actions — the agent's execution environment
Bu derste neler öğreneceksin
- Workflow / job / step / runner kavramlarını ayırt etmek
- Trigger event'lerini bilmek (push, pull_request, issues, workflow_dispatch, schedule)
- permissions: bloğu ile en az ayrıcalık nasıl uygulanır görmek
- Re-run ve revert ile retry/rollback pattern'lerini kavramak
GitHub Actions, GH-600’de agent’ın yürütme ortamıdır. Domain 2.3 “Configure an agent to be invoked in a CI workflow” bullet’ı tam bu derste anlatılan konuyu sorar.
4 katman: workflow → job → step → runner
| Katman | Ne yapar | Tek satır |
|---|---|---|
| Workflow | YAML dosyası — .github/workflows/*.yml | ”ne zaman ne olacak” |
| Job | Tek bir runner’da çalışan adımlar grubu | ”tek makinede yapılacak iş” |
| Step | Tek bir komut veya uses: action çağrısı | ”tek atomik adım” |
| Runner | Job’ı çalıştıran VM (Ubuntu, Windows, macOS, self-hosted) | “iş makinesi” |
Minimal örnek:
name: hello
on: [push]
permissions:
contents: read
jobs:
greet:
runs-on: ubuntu-latest
steps:
- run: echo "hello, agent"
Trigger event’leri — agent ne zaman çalışsın?
| Event | Tetik | Agent kullanımı |
|---|---|---|
push | Her commit push | Otomatik test/lint |
pull_request | PR açılınca/güncellenince | PR review agent’ı |
issues | Issue açıldı/etiketlendi | Triage agent’ı (issue → PR) |
workflow_dispatch | Manuel button (Actions tab) | İnsan başlatır |
schedule | Cron | Periyodik bakım agent’ı |
repository_dispatch | API çağrısı | Dış sistem tetiklemesi |
workflow_run | Başka workflow bitti | Chained agent |
Sınav perspektifinden: Domain 2.3 “Configure an agent to be invoked in a
CI workflow” bullet’ı tipik olarak pull_request veya issues event’lerini
imler.
permissions: bloğu — least-privilege
Default’ta GITHUB_TOKEN çok geniş yetkili. Workflow başında bunu daraltmak
GH-600’de en sık çıkan least-privilege uygulamasıdır:
permissions:
contents: read # repo dosyalarını oku
pull-requests: write # PR yaz/yorum
issues: write # issue yaz
# eksik olanlar reddedilir (statuses, deployments, packages, ...)
Repo seviyesi default: Settings → Actions → General → Workflow permissions → “Read repository contents and packages permissions” (en sıkı).
Re-run ve revert — retry/rollback pattern’i
Domain 2.4’ün “retries” ve “rollbacks” bullet’ları için GitHub’ın native karşılıkları:
Retry — re-run
- Re-run failed jobs — sadece fail olan job’ı yeniden çalıştırır
- Re-run all jobs — tüm workflow’u baştan
- Workflow YAML’inde
retryaction’ları ile step-level retry da yapılabilir
Rollback — revert
- Bozuk commit için
git revert <sha>(yeni commit yaratır, geçmişi silmez) — audit’e dost - Deploy rollback: önceki tag’i yeniden deploy et (environment’a re-deploy)
Workflow artifact’ları — durable state
Job’lar arası veya workflow run’lar arası dosya paylaşımı için:
- uses: actions/upload-artifact@v4
with:
name: agent-plan
path: PLAN.md
Domain 3.2 “Capture task progress and decisions as durable artifacts” tam buraya karşılık gelir — agent’ın planı/durumu artifact olarak yüklenir, sonra başka bir job veya bir sonraki run okur.
Sırada ne var?
Bir sonraki derste GitHub Copilot ekosistemi — code completion’dan custom agent ve cloud agent’a uzanan resim — agent katmanını anlayacağız.