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
- Auto-Description: Menghasilkan deskripsi PR secara otomatis termasuk judul, tipe, ringkasan, dan walkthrough kode.
- PR Review: Memberikan feedback terkait PR, seperti problem yang mungkin terjadi, concern terkait security, effort yang diperlukan untuk melakukan review, dan lain sebagainya
- Code Suggestion: Menyediakan saran kode yang dapat dikomit agar kode kita menjadi lebih baik.
- 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:
- Models: Read
- 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:
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.
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”
runs-on: ubuntu-latest
: Menentukan lingkungan runner yang akan digunakan, yaitu sistem operasi Ubuntu versi terbaru.timeout-minutes: 10
: Menentukan batas waktu maksimal untuk job ini, yaitu 10 menit. Jika job tidak selesai dalam waktu ini, job akan dihentikan.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.
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:
- name: PR Agent action step
: Menentukan nama langkah ini sebagai “PR Agent action step”.id: pragent
: Memberikan ID unik “pragent” untuk langkah ini.uses: Codium-ai/pr-agent@main
: Menggunakan action yang didefinisikan di repositoryCodium-ai/pr-agent
pada branchmain
.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.