Bahasa Indonesia

Codex GitHub Action

Memicu tindakan Codex dari GitHub Events

Gunakan Codex GitHub Action (openai/codex-action@v1) untuk menjalankan Codex dalam tugas CI/CD, menerapkan patch, atau mengirim tinjauan dari alur kerja GitHub Actions. Tindakan ini menginstal Codex CLI, memulai proksi Responses API saat Anda memberikan API key, dan menjalankan codex exec dengan izin yang Anda tentukan.

Gunakan tindakan ini saat Anda ingin:

  • Mengotomatiskan umpan balik Codex pada pull request atau rilis tanpa perlu mengelola CLI sendiri.
  • Menjadikan pemeriksaan kualitas berbasis Codex sebagai prasyarat perubahan dalam pipeline CI Anda.
  • Menjalankan tugas Codex yang dapat diulang (tinjauan kode, persiapan rilis, migrasi) dari file alur kerja.

Untuk contoh CI, lihat Mode noninteraktif dan pelajari kode sumber di repositori openai/codex-action.

Prasyarat

  • Simpan kunci OpenAI Anda sebagai secret GitHub (misalnya OPENAI_API_KEY) dan rujuk kunci tersebut dalam alur kerja.
  • Jalankan tugas pada runner Linux atau macOS. Untuk Windows, tetapkan safety-strategy: unsafe.
  • Lakukan checkout kode sebelum memanggil tindakan agar Codex dapat membaca isi repositori.
  • Tentukan prompt yang ingin Anda jalankan. Anda dapat memberikan teks sebaris melalui prompt atau menunjuk ke file yang di-commit dalam repo dengan prompt-file.

Contoh alur kerja

Contoh alur kerja di bawah ini meninjau pull request baru, merekam respons Codex, dan mengirimkannya kembali ke PR.

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 }}

Ganti .github/codex/prompts/review.md dengan file prompt Anda sendiri atau gunakan input prompt untuk teks sebaris. Contoh ini juga menulis pesan terakhir Codex ke codex-output.md untuk pemeriksaan atau pengunggahan artefak di kemudian waktu.

Mengonfigurasi codex exec

Sesuaikan cara Codex berjalan dengan menetapkan input tindakan yang dipetakan ke opsi codex exec:

  • prompt atau prompt-file (pilih salah satu): Instruksi sebaris atau jalur repositori menuju Markdown atau teks yang berisi tugas Anda. Pertimbangkan untuk menyimpan prompt di .github/codex/prompts/.
  • codex-args: Flag CLI tambahan. Berikan array JSON (misalnya ["--ephemeral"]) atau string shell (--profile ci) untuk mengonfigurasi sesi, profil, atau pengaturan MCP.
  • model dan effort: Pilih konfigurasi agen Codex yang Anda inginkan; biarkan kosong untuk menggunakan nilai default.
  • sandbox: Sesuaikan mode sandbox (workspace-write, read-only, danger-full-access) dengan izin yang diperlukan Codex selama eksekusi.
  • output-file: Simpan pesan terakhir Codex ke disk agar langkah berikutnya dapat mengunggah atau membandingkannya.
  • codex-version: Tetapkan rilis CLI tertentu. Biarkan kosong untuk menggunakan versi terbaru yang dipublikasikan.
  • codex-home: Arahkan ke direktori home Codex bersama jika Anda ingin menggunakan kembali file konfigurasi atau penyiapan MCP di antara beberapa langkah.

Mengelola hak istimewa

Codex memiliki akses luas pada runner yang dihosting GitHub kecuali Anda membatasinya. Gunakan input berikut untuk mengendalikan paparan:

  • safety-strategy (default drop-sudo) menghapus sudo sebelum menjalankan Codex. Tindakan ini tidak dapat dibatalkan untuk tugas tersebut dan melindungi secret dalam memori. Pada Windows, Anda harus menetapkan safety-strategy: unsafe.
  • unprivileged-user memasangkan safety-strategy: unprivileged-user dengan codex-user untuk menjalankan Codex sebagai akun tertentu. Pastikan pengguna dapat membaca dan menulis checkout repositori (lihat contoh unprivileged-user untuk memperbaiki kepemilikan).
  • read-only mencegah Codex mengubah file atau menggunakan jaringan, tetapi Codex tetap berjalan dengan hak istimewa tinggi. Jangan hanya mengandalkan read-only untuk melindungi secret.
  • sandbox membatasi akses sistem file dan jaringan dari dalam Codex. Pilih opsi tersempit yang tetap memungkinkan tugas diselesaikan.
  • allow-users dan allow-bots membatasi siapa yang dapat memicu alur kerja. Secara default, hanya pengguna dengan akses tulis yang dapat menjalankan tindakan; cantumkan akun tepercaya tambahan secara eksplisit atau biarkan kolom kosong untuk perilaku default.

Merekam output

Tindakan ini mengeluarkan pesan terakhir Codex melalui output final-message. Petakan output tersebut ke output tugas (seperti ditunjukkan di atas) atau proses secara langsung dalam langkah berikutnya. Gabungkan output-file dengan fitur artefak yang diunggah jika Anda lebih memilih mengumpulkan transkrip lengkap dari runner. Saat membutuhkan data terstruktur, teruskan --output-schema melalui codex-args untuk menerapkan bentuk JSON tertentu.

Daftar periksa keamanan

  • Batasi siapa yang dapat memulai alur kerja. Utamakan peristiwa tepercaya atau persetujuan eksplisit daripada mengizinkan semua orang menjalankan Codex terhadap repositori Anda.
  • Sanitasi input prompt dari pull request, pesan commit, atau isi issue untuk mencegah injeksi prompt. Tinjau komentar HTML atau teks tersembunyi sebelum memasukkannya ke Codex.
  • Lindungi OPENAI_API_KEY Anda dengan mempertahankan safety-strategy pada drop-sudo atau menjalankan Codex sebagai pengguna tanpa hak istimewa. Jangan pernah membiarkan tindakan dalam mode unsafe pada runner multi-tenant.
  • Jalankan Codex sebagai langkah terakhir dalam tugas agar langkah berikutnya tidak mewarisi perubahan status yang tidak diharapkan.
  • Segera rotasi kunci jika Anda menduga log proksi atau output tindakan mengekspos materi rahasia.

Pemecahan masalah

  • Anda menetapkan prompt dan prompt-file sekaligus: Hapus input duplikat sehingga Anda hanya menyediakan satu sumber.
  • responses-api-proxy tidak menulis informasi server: Pastikan API key tersedia dan valid; proksi hanya dimulai saat Anda memberikan openai-api-key.
  • Mengharapkan penghapusan sudo, tetapi sudo berhasil: Pastikan tidak ada langkah sebelumnya yang memulihkan sudo dan OS runner adalah Linux atau macOS. Jalankan ulang dengan tugas baru.
  • Kesalahan izin setelah drop-sudo: Berikan akses tulis sebelum tindakan berjalan (misalnya dengan chmod -R g+rwX "$GITHUB_WORKSPACE" atau menggunakan pola pengguna tanpa hak istimewa).
  • Pemicu tanpa otorisasi diblokir: Sesuaikan input allow-users atau allow-bots jika Anda perlu mengizinkan akun layanan selain kolaborator dengan akses tulis default.