Versi produk, seperti v1.0.0.100
, tidak hanya mewakili rilis produksi perangkat lunak yang unik, tetapi juga membantu mengidentifikasi rangkaian fitur dan tahapan perbaikan terbaru untuk produk tersebut. Saat ini saya melihat dua cara untuk mempertahankan versi akhir paket / build / biner suatu produk:
Kontrol Versi. File di suatu tempat menyimpan nomor versi. Server pembangunan Continuous Integration (CI) akan memiliki skrip untuk membangun perangkat lunak yang menggunakan nomor versi check-in ini untuk menerapkannya ke semua area perangkat lunak yang diperlukan (binari, paket penginstal, halaman bantuan, dokumentasi, dll).
Parameter lingkungan dan / atau bangunan. Ini dipertahankan di luar kontrol versi (yaitu mereka tidak terikat pada snapshot / tag / cabang). Skrip build mendistribusikan dan menggunakan nomor dengan cara yang sama, namun mereka hanya mendapatkan nilainya secara berbeda ( disediakan untuk skrip build, alih-alih membuat skrip tahu di mana harus mendapatkannya relatif terhadap pohon kode sumber).
Masalah dengan pendekatan pertama adalah bahwa hal itu dapat mempersulit penggabungan lintas cabang-cabang arus utama. Jika Anda masih mempertahankan 2 rilis paralel dari perangkat lunak yang sama, Anda akan menyelesaikan konflik saat menggabungkan antara kedua arus utama jika versi telah berubah pada keduanya sejak penggabungan terakhir.
Masalah dengan pendekatan kedua adalah rekonsiliasi. Saat Anda kembali ke rilis 1 tahun yang lalu, Anda hanya akan bergantung pada informasi tag untuk mengidentifikasi nomor rilisnya.
Dalam kedua kasus, mungkin ada aspek-aspek tertentu dari nomor versi yang tidak diketahui sebelum CI membangun. Sebagai contoh, build CI dapat secara terprogram memasukkan komponen ke-4 yang benar-benar nomor build otomatis (mis. Build 140 di cabang). Mungkin juga nomor revisi di VCS.
Apa cara terbaik untuk mengikuti nomor versi perangkat lunak? Haruskah bagian "dikenal" selalu dipertahankan dalam VCS? Dan jika demikian, apakah konflik lintas cabang utama merupakan masalah?
Saat ini kami mempertahankan nomor versi kami melalui parameter yang ditentukan dan dipelihara dalam CI build plan (Atlassian Bamboo). Kita harus berhati-hati sebelum bergabung ke master
cabang kami bahwa nomor versi telah disiapkan dengan benar sebelum CI membangun dimulai . Sehubungan dengan alur kerja Gitflow, saya merasa bahwa jika nomor versi dilacak dalam kontrol sumber, kami dapat menjamin itu diatur dengan benar ketika kami membuat release
cabang kami dalam persiapan rilis. QA akan melakukan pengujian integrasi / asap / regresi akhir pada cabang ini dan pada saat penandatanganan, penggabungan master
terjadi yang menandakan komitmen untuk dirilis.
version.txt
mana satu versi berisi satu baris1.0.7
dan yang lainnya1.2.0
benar - benar sulit untuk diselesaikan? Jika ini adalah satu-satunya konflik dalam menggabungkan dua cabang yang terpisah, saya akan menganggap diri saya sangat beruntung. Seberapa sering itu terjadi? Jika hal itu terjadi, bukankah itu hal yang baik bahwa Anda dipaksa untuk berpikir tentang nomor versi apa yang seharusnya dimiliki oleh versi gabungan? (Maaf atas penggunaan kata "versi" yang