Türkçe

Codex GitHub Action

GitHub Events üzerinden Codex eylemlerini tetikleyin

Codex'i CI/CD işlerinde çalıştırmak, yamalar uygulamak veya bir GitHub Actions iş akışından incelemeler yayımlamak için Codex GitHub Action'ı (openai/codex-action@v1) kullanın. Bu eylem Codex CLI'ı yükler, bir API key sağladığınızda Responses API proxy'sini başlatır ve codex exec komutunu belirttiğiniz izinlerle çalıştırır.

Şunları yapmak istediğinizde bu eylemi kullanın:

  • CLI'ı kendiniz yönetmeden pull request'ler veya sürümler hakkındaki Codex geri bildirimlerini otomatikleştirmek.
  • Değişiklikleri CI işlem hattınızın bir parçası olarak Codex destekli kalite denetimlerine bağlamak.
  • Tekrarlanabilir Codex görevlerini (kod incelemesi, sürüm hazırlığı, geçişler) bir iş akışı dosyasından çalıştırmak.

Bir CI örneği için Etkileşimsiz mod bölümüne bakın ve openai/codex-action deposundaki kaynak kodunu inceleyin.

Ön koşullar

  • OpenAI anahtarınızı bir GitHub gizli bilgisi (örneğin OPENAI_API_KEY) olarak saklayın ve iş akışında buna başvurun.
  • İşi bir Linux veya macOS çalıştırıcısında çalıştırın. Windows için safety-strategy: unsafe ayarını yapın.
  • Codex'in depo içeriğini okuyabilmesi için eylemi çağırmadan önce kodunuzu kullanıma alın.
  • Hangi istemleri çalıştırmak istediğinize karar verin. prompt aracılığıyla satır içi metin sağlayabilir veya prompt-file ile depoya kaydedilmiş bir dosyayı gösterebilirsiniz.

Örnek iş akışı

Aşağıdaki örnek iş akışı yeni pull request'leri inceler, Codex'in yanıtını yakalar ve PR'a geri gönderir.

name: Codex pull request review
on:
  pull_request:
    types: [opened, synchronize, reopened]

jobs:
  codex:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    outputs:
      final_message: ${{ steps.run_codex.outputs.final-message }}
    steps:
      - uses: actions/checkout@v5
        with:
          ref: refs/pull/${{ github.event.pull_request.number }}/merge
          fetch-depth: 0
          persist-credentials: false

      - name: Run Codex
        id: run_codex
        uses: openai/codex-action@v1
        with:
          openai-api-key: ${{ secrets.OPENAI_API_KEY }}
          prompt-file: .github/codex/prompts/review.md
          output-file: codex-output.md

  post_feedback:
    runs-on: ubuntu-latest
    needs: codex
    if: needs.codex.outputs.final_message != ''
    permissions:
      issues: write
      pull-requests: write
    steps:
      - name: Post Codex feedback
        uses: actions/github-script@v7
        with:
          github-token: ${{ github.token }}
          script: |
            await github.rest.issues.createComment({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: context.payload.pull_request.number,
              body: process.env.CODEX_FINAL_MESSAGE,
            });
        env:
          CODEX_FINAL_MESSAGE: ${{ needs.codex.outputs.final_message }}

.github/codex/prompts/review.md değerini kendi istem dosyanızla değiştirin veya satır içi metin için prompt girdisini kullanın. Örnek ayrıca daha sonra incelemek veya çıktı olarak yüklemek üzere son Codex mesajını codex-output.md dosyasına yazar.

codex exec yapılandırması

codex exec seçenekleriyle eşleşen eylem girdilerini ayarlayarak Codex'in nasıl çalışacağını hassas biçimde yapılandırın:

  • prompt veya prompt-file (birini seçin): Görevinizi içeren satır içi talimatlar ya da Markdown veya metin dosyasına ait depo yolu. İstemleri .github/codex/prompts/ içinde saklamayı değerlendirin.
  • codex-args: Ek CLI bayrakları. Oturumları, profilleri veya MCP ayarlarını yapılandırmak için bir JSON dizisi (örneğin ["--ephemeral"]) ya da kabuk dizesi (--profile ci) sağlayın.
  • model ve effort: İstediğiniz Codex ajan yapılandırmasını seçin; varsayılanlar için boş bırakın.
  • sandbox: Korumalı alan modunu (workspace-write, read-only, danger-full-access), çalıştırma sırasında Codex'in ihtiyaç duyduğu izinlerle eşleştirin.
  • output-file: Sonraki adımların yükleyebilmesi veya karşılaştırabilmesi için son Codex mesajını diske kaydedin.
  • codex-version: Belirli bir CLI sürümünü sabitleyin. Yayımlanan en son sürümü kullanmak için boş bırakın.
  • codex-home: Yapılandırma dosyalarını veya MCP kurulumlarını adımlar arasında yeniden kullanmak istiyorsanız ortak bir Codex ana dizinini gösterin.

Ayrıcalıkları yönetme

Codex, kısıtlamadığınız sürece GitHub tarafından barındırılan çalıştırıcılarda geniş erişime sahiptir. Erişimi denetlemek için şu girdileri kullanın:

  • safety-strategy (varsayılan drop-sudo), Codex'i çalıştırmadan önce sudo öğesini kaldırır. Bu işlem ilgili iş için geri alınamaz ve bellekteki gizli bilgileri korur. Windows'ta safety-strategy: unsafe ayarını yapmanız gerekir.
  • unprivileged-user, Codex'i belirli bir hesapla çalıştırmak için safety-strategy: unprivileged-user ile codex-user değerlerini eşleştirir. Kullanıcının deponun kullanıma alınmış kopyasını okuyup yazabildiğinden emin olun (sahiplik düzeltmesi için unprivileged-user örneğine bakın).
  • read-only, Codex'in dosyaları değiştirmesini veya ağı kullanmasını önler; ancak Codex yine de yükseltilmiş ayrıcalıklarla çalışır. Gizli bilgileri korumak için yalnızca read-only değerine güvenmeyin.
  • sandbox, Codex içindeki dosya sistemi ve ağ erişimini sınırlar. Görevin tamamlanmasına izin veren en dar seçeneği belirleyin.
  • allow-users ve allow-bots, iş akışını kimlerin tetikleyebileceğini sınırlar. Varsayılan olarak yalnızca yazma erişimi olan kullanıcılar eylemi çalıştırabilir; ek güvenilir hesapları açıkça listeleyin veya varsayılan davranış için alanı boş bırakın.

Çıktıları yakalama

Eylem, son Codex mesajını final-message çıktısı üzerinden yayımlar. Bunu bir iş çıktısıyla eşleyin (yukarıda gösterildiği gibi) veya sonraki adımlarda doğrudan işleyin. Çalıştırıcıdaki tam dökümü toplamak isterseniz output-file ile çıktı yükleme özelliğini birlikte kullanın. Yapılandırılmış verilere ihtiyaç duyduğunuzda bir JSON biçimini zorunlu kılmak için --output-schema değerini codex-args üzerinden iletin.

Güvenlik denetim listesi

  • İş akışını kimlerin başlatabileceğini sınırlandırın. Herkesin Codex'i deponuz üzerinde çalıştırmasına izin vermek yerine güvenilir olayları veya açık onayları tercih edin.
  • İstem enjeksiyonunu önlemek için pull request'lerden, commit mesajlarından veya issue gövdelerinden gelen istem girdilerini temizleyin. Codex'e vermeden önce HTML yorumlarını veya gizli metni inceleyin.
  • safety-strategy değerini drop-sudo üzerinde tutarak veya Codex'i ayrıcalıksız bir kullanıcıya taşıyarak OPENAI_API_KEY öğenizi koruyun. Çok kiracılı çalıştırıcılarda eylemi hiçbir zaman unsafe modunda bırakmayın.
  • Sonraki adımların beklenmeyen durum değişikliklerini devralmaması için Codex'i işin son adımı olarak çalıştırın.
  • Proxy günlüklerinin veya eylem çıktısının gizli bilgileri açığa çıkardığından şüpheleniyorsanız anahtarları hemen yenileyin.

Sorun giderme

  • Hem prompt hem de prompt-file ayarladınız: Yalnızca tek bir kaynak sağlamak için yinelenen girdiyi kaldırın.
  • responses-api-proxy sunucu bilgilerini yazmadı: API key'in mevcut ve geçerli olduğunu doğrulayın; proxy yalnızca openai-api-key sağladığınızda başlar.
  • sudo öğesinin kaldırılması bekleniyordu ancak sudo başarılı oldu: Önceki hiçbir adımın sudo öğesini geri yüklemediğinden ve çalıştırıcı işletim sisteminin Linux veya macOS olduğundan emin olun. Yeni bir işle yeniden çalıştırın.
  • drop-sudo sonrasında izin hataları: Eylem çalışmadan önce yazma erişimi verin (örneğin chmod -R g+rwX "$GITHUB_WORKSPACE" ile veya ayrıcalıksız kullanıcı kalıbını kullanarak).
  • Yetkisiz tetikleyici engellendi: Varsayılan yazma yetkili ortak çalışanların dışındaki hizmet hesaplarına izin vermeniz gerekiyorsa allow-users veya allow-bots girdilerini ayarlayın.