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@v6Pertanyaannya: **Kenapa harus pake action third-party ini? GitHub kan punya fitur internal (CLI), masa nggak bisa bikin PR otomatis dengan gampang?**

Mari kita bandingkan kodenya secara berdampingan untuk mencapai hasil yang sama: **Deteksi perubahan, commit, push, dan create PR.**
- 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- 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 }}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."*
Apa jadinya kalau bot ini gagal kerja? Misalnya saat GITHUB_TOKEN kamu kedaluwarsa atau izinnya tiba-tiba dicabut.
**Apa yang terjadi?** Saat bot mencoba melakukan *push* atau membuat PR, GitHub API akan menolak permintaan tersebut.
Error: HttpError: Resource not accessible by integrationBerbeda 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?