Perbandingan Kontras & Error Handling PR

Gimana sih bedanya bikin PR pake cara "instan" vs cara "manual"? Kamu mungkin sering melihat potongan workflow ini di berbagai repositori open source:

name: 📨 Buat Pull Request
if: steps.check_changes.outputs.changes_detected == 'true'
uses: peter-evans/create-pull-request@v6

Pertanyaannya: Kenapa perlu pake action third-party ini? GitHub kan punya fitur internal (CLI), masa tidak bisa membuat PR dapat dengan gampang?

GitHub Actions Flow

Head-to-Head Comparison

Mari kita bandingkan kodenya secara berdampingan untuk mencapai hasil yang sama: Deteksi perubahan, commit, push, dan create PR.

Cara Peter Evans Efisien
- name: 📨 Create Pull Request
 uses: peter-evans/create-pull-request@v6
 with:
 branch: auto-update
 title: 'chore: update assets'
 body: 'Otomatis diupdate oleh bot'
 labels: automated
 reviewers: frijal
Deteksi perubahan otomatis.
Handle update PR lama (idempotent).
tidak perlu setting user git config.
Cara Manual (GitHub CLI) Ribet
- name: Manual PR via CLI
 run: |
 git config user.name "github-actions[bot]"
 git config user.email "[email protected]"
 git add .
 if [[ -n "$(git status --porcelain)" ]]; then
 git commit -m "Auto update"
 git push origin HEAD:auto-update-manual
 gh pr create --title "Update" --body "Otomatis"
 else
 echo "No changes"
 fi
 env:
 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Harus handle error "PR already exists".
perlu config identitas git manual.
Logika bash gampang pecah.

Mengapa Third-Party Tetap Menang?

GitHub memang tidak punya official built-in action khusus buat one-step PR. Kalau kamu pake cara manual, kamu bakal pusing waktu harus mengecek: "Eh, ini PR-nya udah ada belum ya? Kalau udah ada, jangan bikin baru, tapi timpa yang lama."

Simulasi: Saat Token Kadaluarsa

Apa jadinya kalau bot ini gagal kerja? Misalnya saat GITHUB_TOKEN kamu kedaluwarsa atau izinnya tiba-tiba dicabut.

FAILED

Skenario: 403 - Resource not accessible

Apa yang terjadi? Saat bot mencoba melakukan push atau membuat PR, GitHub API akan menolak permintaan tersebut.

Gimana Bot Menanganinya?

Berbeda dengan script manual yang mungkin berhenti di tengah jalan dan meninggalkan junk branch, bot peter-evans menangani error secara elegan dengan Atomic Operation: Jika dia gagal di tahap pembuatan PR, dia tidak akan meninggalkan commit yang berantakan atau mencoba membanjiri API dengan request berulang.

Solusi: Jika token kadaluarsa atau error 403 muncul, pastikan bagian permissions: contents: write dan pull-requests: write sudah ada di file YAML kamu.

Gimana menurutmu? Lebih milih nulis script Bash manual atau pake robot yang udah jadi?