Mengimplementasikan AI untuk Melakukan Review pada Pull Request Github

Halo semua

Github memiliki fitur terkait Pull Request yang cukup luar biasa, yaitu dapat melakukan Pull Request analysis dan membuat Pull Request description dan summarization menggunakan AI. Hal ini dapat membantu tim kita untuk membuat kode yang lebih baik. Namun sayangnya, fitur ini hanya ada pada Copilot X Enterprise, yang membutuhkan biaya $39/user/bulan pada saat artikel ini dibuat.

Alternativenya, kita bisa menggunakan opensource project pr-agent.

Codium-ai/pr-agent overview

CodiumAI PR-Agent adalah project open-source yang memanfaatkan AI untuk menganalisis dan memberikan feedback pada pull request secara otomatis. Tool ini dapat diintegrasikan dengan berbagai platform seperti GitHub, GitLab, Bitbucket, dan Azure DevOps.

Berikut beberapa fitur yang dimiliki

  1. Auto-Description: Menghasilkan deskripsi PR secara otomatis termasuk judul, tipe, ringkasan, dan walkthrough kode.
  2. PR Review: Memberikan feedback terkait PR, seperti problem yang mungkin terjadi, concern terkait security, effort yang diperlukan untuk melakukan review, dan lain sebagainya
  3. Code Suggestion: Menyediakan saran kode yang dapat dikomit agar kode kita menjadi lebih baik.
  4. Question Answering: Menjawab pertanyaan teks bebas mengenai PR yang sedang direview.

Yang harus kita lakukan pertama kali adalah kita harus memiliki akun openai.com. Teman-teman juga dapat menggunakan akun chatgpt jika sudah memilikinya.

Mendaftarkan akun OpenAI

Untuk mendaftarkan akun OpenAI, kita perlu menuju ke alamat https://openai.com, dan klik tombol Log in, atau langsung menuju ke halaman https://platform.openai.com/login?launch

Pada halaman ini, gunakan akun google untuk mempermudah proses registrasi

Setelah berhasil registrasi, kita akan mendapatkan halaman openai

Ketika kita berhasil melakukan registrasi ke openai, kita akan diberikan Kredit untuk melakukan trial sebesar $5 yang dapat kita lihat di https://platform.openai.com/account/billing/overview. Jumlah ini cukup untuk kita melakukan coba coba fitur review pull requestnya.

Langkah selanjutnya adalah membuat API keys yang nantinya kita gunakan di github.

Pada panel sebelah kiri, ada menu API keys, atau kita dapat langsung mengakses https://platform.openai.com/api-keys

Dan menu tersebut akan membawa kita ke tampilan berikut

Untuk dapat membuat API keys, kita perlu melakukan verifikasi nomor telepon terlebih dahulu. Kita dapat menggunakan whatsapp untuk menerima kode verifikasi dari openai.

Setelah berhasil melakukan verifikasi nomor handphone, kita perlu membuat API Key yang nantinya akan kita gunakan di repository github kita.

Buat terlebih dahulu sebuah project, buka menu Settings, dan klik Create project

Beri nama pada project kita, misalnya Github Reviewer

Selanjutnya, mari kita buat API key. Pergi ke halaman API key, pastikan nama project pada kotak berwarna hijau sudah sesuai dengan nama project yang kita buat sebelumnya

Klik tombol Create new secret key berikut ini

Pastikan kita memilih Restricted pada Permissions, dan ubah akses Resources untuk 2 item berikut:

  1. Models: Read
  2. Model capabilities: Write

Hasil API key akan tampil seperti berikut. Simpan baik baik secret keynya, karena kita tidak dapat menampilkan lagi API key tersebut

Setup openai automation menggunakan github action

Untuk memastikan bahwa openai dapat mereview code kita di github, kita perlu membuat automation menggunakan github action pada repository kita.

Pergi ke repository kita, Klik Settings → Secrets and variables → Actions → New repository secret

Pada bagian Name, masukkan OPENAI_KEY, dan pada bagian Secret, masukkan secret key yang kita dapatkan dari openai

Ketika berhasil menambahkan API Key, tampilannya akan seperti berikut

Pada repository kita, buatlah branch baru, yang berisi file baru pada folder .github/workflows/<nama-apapun>.yml

---
on:
  pull_request:
    types:
      - opened
      - reopened
      - ready_for_review
      - review_requested

  issue_comment:
    types:
      - created
      - edited
jobs:
  pr_agent_job:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    permissions:
      issues: write
      pull-requests: write
      contents: write
    name: Run pr agent on every pull request, respond to user comments
    steps:
      - name: PR Agent action step
        id: pragent
        uses: Codium-ai/pr-agent@main
        env:
          OPENAI_KEY: ${{ secrets.OPENAI_KEY }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Buatlah pull request dari branch tersebut.

Hasil Implementasi

Berikut beberapa tangkapan dari halaman Pull Request ketika pr-agent berhasil diimplementasikan.

Selamat, pull request anda sudah direview oleh AI dari openai!! 🎉

Setelah dimerge, agar segala pull request lain bisa direview oleh AI juga, maka pastikan di pull request lain sudah terdapat file .github/workflows/<nama-apapun>.yml.

Selamat mencoba!!

Penjelasan lebih lanjut terkait file github action

File github action yang terkait

on:
  pull_request:
    types:
      - opened
      - reopened
      - ready_for_review
      - review_requested

  issue_comment:
    types:
      - created
      - edited
jobs:
  pr_agent_job:
    runs-on: ubuntu-latest
    timeout-minutes: 10
    permissions:
      issues: write
      pull-requests: write
      contents: write
    name: Run pr agent on every pull request, respond to user comments
    steps:
      - name: PR Agent action step
        id: pragent
        uses: Codium-ai/pr-agent@main
        env:
          OPENAI_KEY: ${{ secrets.OPENAI_KEY }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Bagian artikel di bawah ini digenerate secara otomatis menggunakan GPT-4o, model terbaru dari openai 😉

Berikut adalah penjelasan untuk kode GitHub Action di atas:

Bagian “on”

Bagian ini menentukan pemicu (triggers) untuk menjalankan action:

  1. pull_request: Action akan berjalan ketika ada aktivitas terkait pull request, dengan tipe-tipe aktivitas berikut:
    • opened: Ketika pull request baru dibuka.
    • reopened: Ketika pull request yang sebelumnya ditutup dibuka kembali.
    • ready_for_review: Ketika draft pull request diubah menjadi siap untuk direview.
    • review_requested: Ketika ada permintaan review pada pull request.
  2. issue_comment: Action akan berjalan ketika ada aktivitas terkait komentar pada issue, dengan tipe-tipe aktivitas berikut:
    • created: Ketika komentar baru dibuat.
    • edited: Ketika komentar yang sudah ada diedit.

Bagian “jobs”

Bagian ini mendefinisikan satu atau lebih pekerjaan (jobs) yang akan dijalankan oleh action:

Job “pr_agent_job”

  1. runs-on: ubuntu-latest: Menentukan lingkungan runner yang akan digunakan, yaitu sistem operasi Ubuntu versi terbaru.
  2. timeout-minutes: 10: Menentukan batas waktu maksimal untuk job ini, yaitu 10 menit. Jika job tidak selesai dalam waktu ini, job akan dihentikan.
  3. permissions: Menentukan hak akses yang diberikan kepada job:
    • issues: write: Memberikan izin untuk menulis pada issue.
    • pull-requests: write: Memberikan izin untuk menulis pada pull request.
    • contents: write: Memberikan izin untuk menulis pada konten repository.
  4. name: Run pr agent on every pull request, respond to user comments: Nama deskriptif untuk job ini.

Bagian “steps”

Bagian ini mendefinisikan langkah-langkah (steps) yang akan dijalankan dalam job:

  1. - name: PR Agent action step: Menentukan nama langkah ini sebagai “PR Agent action step”.
  2. id: pragent: Memberikan ID unik “pragent” untuk langkah ini.
  3. uses: Codium-ai/pr-agent@main: Menggunakan action yang didefinisikan di repository Codium-ai/pr-agent pada branch main.
  4. env: Menetapkan variabel lingkungan (environment variables) yang diperlukan oleh action:
    • OPENAI_KEY: ${{ secrets.OPENAI_KEY }}: Mengambil nilai kunci API OpenAI dari secrets repository.
    • GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}: Mengambil token GitHub dari secrets repository yang memberikan akses otentikasi untuk berinteraksi dengan API GitHub.

Leave A Comment