Actions trigger, scope ve execution context
Actions triggers, scope, and execution context
Bu derste neler öğreneceksin
- Trigger event'lerini agent senaryolarıyla eşleştirmek
- Branch-based scope ve repo-bazlı scope'u konfigüre etmek
- Execution context'in (env, secret, runner, network) doğru değerlendirilmesi
- Environment-specific constraint'leri agent'a aktarmayı görmek
Domain 2.3 — agent’ı doğru context’te çalıştırma. CI workflow trigger’ı, branch/repo scope, env-specific constraint’ler bu bullet’larda.
Trigger event’leri — agent senaryosuna göre
| Event | Agent senaryosu | Default permission |
|---|---|---|
pull_request | PR review agent — açılan/güncellenen PR’a yorum yazar | Read-only (security için) |
pull_request_target | Fork PR’larında secret kullanabilir (DİKKAT — güvenlik riski) | Yazılabilir, daha geniş |
issues | Issue triage agent — açılan issue’yu kategorize eder | Standard |
workflow_dispatch | İnsan başlatır — manuel agent | Standard |
schedule | Cron — gece bakım agent’ı | Standard |
repository_dispatch | Dış sistem tetikler | Standard |
workflow_run | Başka workflow bitti — agent zincirleme | Standard |
pull_request vs pull_request_target — sınav favorisi
pull_request | pull_request_target | |
|---|---|---|
| Çalışma context | PR’ın fork’ında | Base repo’da |
| Secret erişim | YOK (security) | VAR |
| Yazma izni | Sınırlı | Tam |
| Güvenlik | Güvenli | Riskli — fork kod çalıştırma |
Sınav “fork PR’larında secret kullanmak için” sorusunun cevabı
pull_request_target. Ama community bu pattern’i RCE riski nedeniyle tehlikeli bulur — fork kodunu çalıştırmadan önce mutlaka review.
Repo ve branch scope
Branch-based scope
on:
push:
branches:
- main
- 'release/**'
pull_request:
branches:
- main
Agent sadece bu branch’lerle etkileşime girer. Glob desteklenir.
Path-based filter (ek scope)
on:
pull_request:
paths:
- 'src/**'
- '!src/legacy/**' # legacy hariç
Sadece belirli yol değişikliklerinde tetiklenir.
Repo scope (agent ayarı)
Copilot custom agent’ın scope’u repo seviyesinde ayarlanır. Bir agent sadece izinli repo’larda görev yapabilir. Org seviyesinde whitelist yapılandırılır.
Execution context değerlendirmesi
Bullet: “Evaluate the execution context for an agent”. Agent’ın gördüğü ortamı bilmek = kararlarının kalitesi.
Context bileşenleri
| Bileşen | Nereden gelir |
|---|---|
| Runner OS | runs-on: ubuntu-latest veya windows-latest vb. |
| Repo working dir | actions/checkout@v4 ile clone’lanır |
| Env variables | env: bloğu + ${{ vars.X }} |
| Secrets | ${{ secrets.X }} (sadece geçerli context) |
| Token | ${{ secrets.GITHUB_TOKEN }} veya custom PAT |
| Network | Default geniş; runner ağı sınırlanabilir |
| PR/issue context | ${{ github.event.pull_request.* }} |
Agent context’i okuyabilmek için Actions context’i (github.*,
vars.*, secrets.*) açıkça bilmeli.
Env değişkenleri context’e aktarma
jobs:
agent:
runs-on: ubuntu-latest
env:
ENVIRONMENT: production
LOG_LEVEL: info
MCP_REGISTRY_URL: ${{ vars.MCP_REGISTRY_URL }}
steps:
- run: my-agent --env $ENVIRONMENT
Environment-specific constraints
Bullet: “Configure an agent to handle environment-specific constraints”.
Staging ↔ production farkları:
- Secret değerleri farklı
- Network erişimi farklı (prod genelde daha kısıtlı)
- Resource limit’leri farklı (prod cluster daha küçük)
- Database farklı (prod read-only olabilir)
Pattern: env-aware agent config
jobs:
deploy:
strategy:
matrix:
environment: [staging, production]
environment: ${{ matrix.environment }} # GitHub environments
runs-on: ubuntu-latest
steps:
- name: Set env-specific limits
run: |
if [ "${{ matrix.environment }}" = "production" ]; then
echo "MAX_REQUESTS=10" >> $GITHUB_ENV
echo "TIMEOUT=30s" >> $GITHUB_ENV
else
echo "MAX_REQUESTS=100" >> $GITHUB_ENV
echo "TIMEOUT=120s" >> $GITHUB_ENV
fi
- name: Run agent
run: my-agent --max-requests $MAX_REQUESTS --timeout $TIMEOUT
Agent çalışma sırasında env’i okur ve constraint’lere uyar.
Otonom aksiyon: branch + PR oluşturma
Bullet: “Enable an agent to perform autonomous actions, including creating branches and pull requests”.
Minimum izin
permissions:
contents: write # branch oluşturma için
pull-requests: write # PR açma için
Pattern: issue → branch → PR
jobs:
triage-agent:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
issues: write
steps:
- uses: actions/checkout@v4
- name: Create branch
run: git checkout -b "fix/${{ github.event.issue.number }}"
- name: Run agent
run: my-agent --issue ${{ github.event.issue.number }}
- name: Commit + push + PR
run: |
git add .
git commit -m "fix: agent-generated patch for issue #${{ github.event.issue.number }}"
git push -u origin HEAD
gh pr create --title "Fix issue #${{ github.event.issue.number }}" \
--body "Auto-generated by agent. See plan in description."
Branch protection devrede olduğu için bu PR otomatik merge olmaz — review bekler.
Mini quiz — Actions trigger & scope (3 soru)
Sırada ne var?
Bir sonraki derste retry → rollback → escalation zinciri — Domain 2.4’ün imza pattern’i; sınavda her tur tekrar eder.