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 harus pake action third-party ini? GitHub kan punya fitur internal (CLI), masa nggak bisa bikin PR otomatis 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).
Gak 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".
Harus config identitas git manual.
Logika bash gampang pecah.

Mengapa Third-Party Tetap Menang?

GitHub memang nggak 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?