Gitflow — Model Branching Pada Git
Apa itu Git dan GitFlow? 🤔
Git
Git — merupakan sebuah tool yang dapat mengontrol versi secara terdistribusi yang bisa kita dapatkan dengan gratis dan open source yang dirancang untuk menangani baik dari proyek berskala kecil hingga sangat besar dengan cepat dan efisien.
Perintah-perintah pada Git
git clone
— Membuat salinan dari repositori Git yang ada. ini adalah cara paling umum bagi developer untuk mendapatkan source code projek dari repositori pusat.git add
— Memindahkan perubahan dari direktori pekerjaaan ke staging area. Ini untuk menyiapkan snapshot sebelum memasukkan kode ke history git sesungguhnya.git commit
— Memasukkan kode ke riwayat proyek. Dikombinasikan dengan git add, ini mendefinisikan alur kerja dasar untuk semua pengguna Git.git push
— Ini memungkinkan kita untuk memindahkan branch lokal ke repositori lain, yang berfungsi untuk mempublikasikan kontribusi kode kita.git rebase
— Rebasing memungkinkan kita memindahkan branch, yang membantu kita menghindari penggabungan commit yang tidak perlu.git stash
— Untuk menyimpan (atau menyimpan) perubahan sementara yang kita buat dengan salinan pekerjaan kita sehingga kita dapat mengerjakan yang lain, lalu kembali dan menerapkannya kembali nanti.
GitFlow
GitFlow — dicetuskan pertama kali oleh Vincent Driessen — merupakan model alternatif dari branching pada Git yang melibatkan penggunaan branch fitur dan beberapa branch utama.
Manfaat menerapkan Gitflow
- Pengembangan Secara Paralel
Dengan GitFlow, pengembangan paralel dapat kita lakukan dengan sangat mudah, dengan memisahkan environment pengembangan dari pekerjaan yang sudah selesai atau dengan kata lain memisahkan branch development dengan branch master/main .
jika kita ingin berpindah dari satu tugas ke tugas lainnya, yang perlu kita lakukan hanyalah melakukan perubahan dan kemudian membuat branch fitur baru untuk tugas baru. Ketika tugas itu selesai, cukup melakukan checkout ke cabang fitur dan dapat melanjutkan kode sebelumnya. - Kolaborasi
Branch fitur juga memudahkan developer untuk berkolaborasi pada fitur yang sama, karena setiap branch fitur adalah tempat di mana perubahan yang diperlukan agar fitur baru berfungsi sehingga sangat mudah untuk melihat dan mengikuti apa yang dilakukan setiap kolaborator. - Perilisan Aplikasi pada Staging
Saat pengembangan satu fitur selesai, saatnya kode tersebut akan digabungkan kembali ke branch pengembangan, yang merupakan area untuk semua fitur lengkap yang belum dirilis ataupun sebagai tempat dilakukannya testing sebelum production. Jadi ketika rilis berikutnya bercabang dari pengembangan, secara otomatis akan berisi semua hal baru yang telah selesai. - Mendukung Untuk Perbaikan Darurat
GitFlow mendukung branch hotfix — branch yang dibuat dari branch production. Kita dapat menggunakan ini untuk membuat perubahan darurat seperti memperbaiki bug yang terjadi saat production.
Cara Kerja GitFlow ⚒️
- Branch Utama
Pada alur GitFlow, kita memiliki 2 branch utama yang akan menyimpan seluruh riwayat commit aplikasi yang sedang kita buat selamanya. Dari dua branch tersebut yang pertama yaitu Main, branch ini ditujukan untuk menyimpan riwayat rilis resmi pada aplikasi, kemudian branch Staging berfungsi sebagai cabang integrasi untuk fitur atau sebagai perantara antara production dengan fitur.
Harus selalu kita ingat bahwa semua commit yang berada pada branch Main merupakan versi stabil dari aplikasi kita. Ketika kode di branch Staging mencapai titik stabil dan siap dirilis, semua perubahan harus digabungkan kembali menjadi branch Main.
Cara membuat branch Staging dari Main
git branch staging
git push -u origin staging
- Branch Fitur
definisi fitur dapat diartikan sebagai sebuah PBI (Product Backlog Item) yang merupakan capaian fitur untuk masing-masing developer. Branch fitur umumnya dibuat dari branch Staging terbaru. Pada kelas PPL kali ini, kami memiliki aturan pada penamaan branch fitur yaitu
PBI-<nomor_pbi>-<judul_pbi>
namun kelompok kami memecah setiap PBI yang ada menjadi tugas — tugas yang lebih kecil dan setiap tugas memiliki branch tersendiri, sehingga kami menyesuaikan penamaan branch menjadi
PBI-<nomor_pbi>-task-<nomor_tugas>-<judul_task>
tujuan kami melakukan hal tersebut agar jumlah changes pada setiap merge request yang akan dibuat oleh setiap developer menjadi lebih sedikit sehingga dapat di review dengan mudah.
Cara membuat branch fitur
git checkout develop
git checkout -b PBI-1-task-1-membuat_halaman_login
- Branch Pendukung
selain branch utama dan branch fitur, pada alur GitFlow membutuhkan branch pendukung untuk menangani hal-hal yang krusial seperti melakukan perbaikan jika ditemukan bug pada production atau pun jika kita ingin menghapus satu fitur yang dirasa tidak dibutuhkan lagi.
pada kelas PPL kali ini kami akan membuat dua branch pendukung yaitu Hotfix dan Coldfix.
- Branch Hotfix merupakan tempat percabangan yang digunakan khusus menangani error/bug yang terjadi di branch main dan hanya boleh dibuat dari branch main.
- Branch Coldfix digunakan khusus untuk melakukan perubahan terhadap branch staging jika ingin merevert suatu fitur yang dirasa belum siap untuk siteruskan ke branch main.
Konvensi penamaan pada branch Hotfix dan Coldfix
// Hotfix
hotfix-sprint_<nomor_sprint>// Coldfix
coldfix-sprint_<nomor_sprint>
Implementasi TDD pada commit message git
Pada proses membangun aplikasi kami didorong untuk melaksanakan prinsip TDD (Test Driven Development). prinsip TDD mengacu pada gaya pemrograman di mana tiga aktivitas terjalin erat: pengkodean, pengujian (dalam bentuk tes unit penulisan) dan desain (dalam bentuk refactoring).
Dalam pembuatan test, kita memiliki ketentuan yaitu setiap test case harus menjawab setiap acceptance criteria pada PBI yang sudah terdefinisi pada tahap project/sprint planning.
Pada aktivitas pengkodean kita diwajibkan untuk memulai commit pada suatu fitur dengan membuat test terlebih dahulu sebelum membuat fungsional fitur ditandai dengan adanya commit message pada riwayat git
[RED] membuat test_login_admin
kemudian Pada aktivitas pengujian dilanjutkan dengan pengimplementasian fungsi fitur berdasaarkan test case ayng sudah terdefinisi pada commit sebelumnya. hal tersebut ditandai dengan commit message
[GREEN] membuat fungsi login_for_admin
setelah itu, jika kita merasa kode yang sudah ditulis masih kurang clean atau efisien, kita dapat melakukan aktivitas desain (Refactoring) ditandai dengan commit message
[REFACTOR] restructure fungsi login_for_admin
Selain RED, GREEN, dan REFACTOR, ada yang namanya CHORE digunakan untuk melakukan commit terhadap tugas-tugas yang tidak berhubungan dengan implementasi fitur seperti menambah file gambar atau font.
contoh commit message CHORE
[CHORE] restructure perintah pada berkas .gitlab-ci.yml
Menggabungkan branch PBI/Fitur dengan branch staging
Semua branch fitur/PBI yang sudah selesai dikerjakan oleh setiap developer diwajibkan untuk disatukan kembali ke branch staging dan wajib melalui pembuatan merge request ke staging.
Sebelum melakukan merge ke staging pastikan bahwa CI/CD yang sudah berjalan ketika membuat merge request menandakan passed pada fase Build dan Test serta sudah mendapat persetujuan dan review dari developer lain yang bukan penanggung jawab fitur tersebut.
Menggabungkan branch staging dengan branch main
Pada umum nya, penggabungan branch staging dengan branch main dilakukan pada tahap perilisan sebuah aplikasi ketika sprint review bersama project owner dan stakeholder. proses tersbut akan lebih mudah jika memiliki script yang bertugas melakukan auto-deploy jika terdapat perbahan pada branch main.
Sumber:
Bermanfaat?
Jika Anda merasa artikel ini bermanfaat, silakan kasih saya👏 dan bagikan!
dan follow saya untuk mendapat notifikasi terkait artikel saya kedepannya!
Terima kasih😄