<M />

Welcome to Mahardika's Personal Workspace

Architecting Scalable SaaS & High-Performance Digital Solutions

Initializing Core Architecture...0%
System Active • Mahardika Kessuma Denie
Back
Tutorial & StoryApr 26, 2026

Automating Workflow: Integrasi Ticketing Portal + GitHub Apps

Cerita di balik layar gimana cara saya bikin sistem ticketing yang bisa 'ngobrol' otomatis sama GitHub biar gak ada lagi drama lupa update status tiket.

Automating Workflow: Integrasi Ticketing Portal + GitHub Apps 🚀

Pernah nggak sih ngerasa capek karena harus update status tiket manual setiap kali selesai nge-push code atau merge Pull Request (PR)? Kalau iya, berarti kita satu server.

Di salah satu project saya, saya kepikiran: "Kenapa nggak kita bikin sistemnya otomatis aja?". Akhirnya, saya bangun integrasi antara Ticketing Portal dengan GitHub Apps lewat Webhooks.

Nah, di artikel ini saya mau share gimana cara saya bikin itu semua jadi kenyataan.


🛠️ Kenapa Pakai GitHub Apps, Bukan Personal Token?

Dulu saya sempat pakai Personal Access Token, tapi jujur aja, itu ribet kalau buat skala tim. Pakai GitHub Apps itu jauh lebih "elegan" karena:

  1. Granular Permissions: Kita bisa milih cuma butuh akses ke PR atau Branch doang.
  2. Lebih Aman: Nggak terikat sama akun personal siapapun.
  3. Webhook Support: Ini dia bumbu rahasianya.

🛰️ Gimana Cara Kerjanya? (The Logic)

Bayangin GitHub itu kayak kurir yang ngirim paket. Setiap ada kejadian di repository (kayak bikin branch baru), GitHub bakal ngirim "paket" data (JSON) ke URL server kita.

1. Setting Up the Webhook

Di dashboard GitHub Apps, saya arahkan Webhook URL ke endpoint API di Ticketing Portal saya, misal: https://api.myticket.com/webhook/github. Jangan lupa tambahkan Webhook Secret biar nggak sembarang orang bisa nembak API kita.

2. Event yang Saya Pantau

Nggak semua kejadian harus direspon. Saya fokus ke 3 hal:

  • Create: Buat deteksi kalau ada branch baru.
  • Push: Buat tracking aktivitas commit.
  • Pull Request: Ini yang paling krusial buat update status tiket ke Review atau Done.

🧠 Magic Part: Smart Mapping ("Anti Salah Kamar")

Ini fitur yang paling saya banggain. Kadang developer suka lupa atau salah nulis nomor tiket di PR. Jadi saya bikin logikanya begini:

typescript
// Contoh logika sederhana deteksi tiket
const branchName = payload.pull_request.head.ref; // feature/TASK-123-login-page
const ticketId = extractTicketNumber(branchName); // Hasilnya: TASK-123

if (ticketId) {
   // Update status tiket di database otomatis!
   await updateTicketStatus(ticketId, 'IN_PROGRESS');
}

Tapi gimana kalau dev-nya nulisnya di Parent Task padahal harusnya di Sub-task? Sistem saya otomatis nge-cek: "Siapa yang nge-push? Dia dapet tugas di sub-task mana di bawah parent ini?". Kalau ketemu, sistem langsung belokin update-nya ke sub-task yang bener. Smart, right? 😎


🚀 Hasil Akhirnya?

Setelah integrasi ini jalan:

  • Status Tiket Real-time: Begitu PR di-merge, tiket langsung pindah ke kolom Testing.
  • Data Akurat: Gak ada lagi drama "Lupa update progress", karena sistem yang ngitungin.
  • Developer Happy: Mereka cuma perlu fokus ngoding, urusan admin biar sistem yang urus.

📝 Kesimpulan

Bikin otomatisasi kayak gini emang butuh usaha di awal, tapi payoff-nya luar biasa buat produktivitas tim. Kalau kamu mau coba, mulailah dengan memahami struktur JSON dari Webhook GitHub, sisanya tinggal mainin logika di backend kamu.

Ada pertanyaan atau mau diskusi soal integrasi GitHub? Chat saya lewat halaman Contact ya!

Happy Coding! ☕

Logo
Mahardika.

Building high-performance multi-tenant SaaS applications, real-time dashboards, and resilient microservices architectures.

Availability

Open for Opportunities

Available for full-time senior software engineering roles, technical advisory, and high-impact SaaS development.

© 2026 Mahardika Kessuma Denie. All rights reserved.

Built with Nuxt 3 & Tailwind CSS