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: unsafeayarı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.
promptaracılığıyla satır içi metin sağlayabilir veyaprompt-fileile 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:
promptveyaprompt-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.modelveeffort: İ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ılandrop-sudo), Codex'i çalıştırmadan öncesudoöğesini kaldırır. Bu işlem ilgili iş için geri alınamaz ve bellekteki gizli bilgileri korur. Windows'tasafety-strategy: unsafeayarını yapmanız gerekir.unprivileged-user, Codex'i belirli bir hesapla çalıştırmak içinsafety-strategy: unprivileged-userilecodex-userdeğerlerini eşleştirir. Kullanıcının deponun kullanıma alınmış kopyasını okuyup yazabildiğinden emin olun (sahiplik düzeltmesi içinunprivileged-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ızcaread-onlydeğ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-usersveallow-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-strategydeğerinidrop-sudoüzerinde tutarak veya Codex'i ayrıcalıksız bir kullanıcıya taşıyarakOPENAI_API_KEYöğenizi koruyun. Çok kiracılı çalıştırıcılarda eylemi hiçbir zamanunsafemodunda 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-keysağladığınızda başlar. sudoöğesinin kaldırılması bekleniyordu ancaksudobaşarılı oldu: Önceki hiçbir adımınsudoöğ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-sudosonrasında izin hataları: Eylem çalışmadan önce yazma erişimi verin (örneğinchmod -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-usersveyaallow-botsgirdilerini ayarlayın.