Modül 3 · Domain 2 — Tool & MCP (%20-25, EN AĞIR) · ⏱ 13 dakika

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

EventAgent senaryosuDefault permission
pull_requestPR review agent — açılan/güncellenen PR’a yorum yazarRead-only (security için)
pull_request_targetFork PR’larında secret kullanabilir (DİKKAT — güvenlik riski)Yazılabilir, daha geniş
issuesIssue triage agent — açılan issue’yu kategorize ederStandard
workflow_dispatchİnsan başlatır — manuel agentStandard
scheduleCron — gece bakım agent’ıStandard
repository_dispatchDış sistem tetiklerStandard
workflow_runBaşka workflow bitti — agent zincirlemeStandard

pull_request vs pull_request_target — sınav favorisi

pull_requestpull_request_target
Çalışma contextPR’ın fork’ındaBase repo’da
Secret erişimYOK (security)VAR
Yazma izniSınırlıTam
GüvenlikGüvenliRiskli — 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şenNereden gelir
Runner OSruns-on: ubuntu-latest veya windows-latest vb.
Repo working diractions/checkout@v4 ile clone’lanır
Env variablesenv: bloğu + ${{ vars.X }}
Secrets${{ secrets.X }} (sadece geçerli context)
Token${{ secrets.GITHUB_TOKEN }} veya custom PAT
NetworkDefault 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)

Bir fork PR'ında secret'a ihtiyacı olan agent için hangi event kullanılır? (Güvenlik riskiyle birlikte)

Agent'a sadece `feature/**` branch'lerinde çalışma sınırı koymak için workflow'da hangi alan?

Cloud agent'a 'issue açılınca otomatik PR aç' yetkisi için minimum izin?

Sırada ne var?

Bir sonraki derste retry → rollback → escalation zinciri — Domain 2.4’ün imza pattern’i; sınavda her tur tekrar eder.