Biz kendi git depolarını yöneten çok sayıda takımı olan küçük bir şirketiz. Bu bir web platformudur ve her takımın eserleri günün sonunda gece testleri için konuşlandırılır. Süreci versiyonlama ve paketleme etrafında resmileştirmeye çalışıyoruz.
Her takımın günlük gelişim yaptıkları bir ana dalı vardır. Her bir ekibin kalite güvencesi üyeleri, ekibinin yaptığı değişikliklerin eserlerinin, tüm bileşenlerin şef tarafından birleştirildiği bir test yatağına yerleştirilmesini istiyor. Eserler tarball'lardır, ancak sürümleri doğru düşünüp düşünebilmemiz için RPM'lere dönüştürmek istiyorum.
Salım işlemi, git depolarının her birinin geliştirme dalından (çoğu durumda master) bir ayırma dalının kesilmesini içerir. Bu daha sonra testler yapan ve bir dizi esere imza atan kalite güvencesine verilir.
Örneğin, bu, ilişkili serbest bırakma dalları ile tipik bir git deposudur:
0-0-0-0-0-0-0-0-0-0 (master)
| |
0 0
(rel-1) |
0
(rel-2)
Geliştirme dallarından gelen paketlerin sürümlendirilmesi için bir plan bulmaya çalışıyorum. Her bir reponun ana dalını aşırı şekilde etiketlemek ve etiketleri yalnızca şubeleri serbest bırakmak için kısıtlamak istemiyoruz. Ancak standart yum / rpm semantiği kullanarak test makinelerinde konuşlandırılmış paketleri sorgulayabilmeliyiz. Ana dalda etiket olmadığında geliştirme sürümleri nasıl görünür? git describe
Bana bir yapı sürümü yararlı bir temsil sağlayabilir anlıyorum ama şube çeşitli yayın noktaları etiketlendiğinde iyi çalışır.
EDIT1: @ Urban48'in cevabına yanıt olarak
Serbest bırakma sürecimizi biraz daha açıklamam gerektiğini düşündüm. Bu tartışmanın amaçları doğrultusunda, master
tüm depolarda şubemiz olduğunu varsayalım . master
Şube geliştirme şube olarak kabul edilir ve bir otomatik CI-CD dağıtıldığı QA ortamı sağladı. Master'ın stabilitesini sağlamak için gece testlerinin bir alt kümesi burada çalışır. Bir serbest bırakma dalını kesmeden önce bu iş hattına bakıyoruz. Serbest bırakma kollarımız kısa ömürlüdür. Diyelim ki, bir serbest bırakma dalını (istikrarlı bir masterdan) kestikten sonra, tam bir gerileme gerçekleştirilir, düzeltmeler yapılır ve üretime uygulanır. Bu işlem yaklaşık bir hafta sürer. Neredeyse iki haftada bir üretime geçiyoruz.
Özellik dallarımız her zaman master'dan kesilir ve CI-CD stabilite kontrollerine tabi oldukları master ile birleşmeden önce bir miktar geliştirici testine tabi tutulur.
Düzeltmeler düzeltme dallarında (serbest bırakma dallarından kesilmiş) yapılır ve üretime en az etki testi ile dağıtılır.
Sürüm ve düzeltme dalları için sürüm oluşturma stratejimiz semver'i takip eder. KG döngüsü sırasında sürüm dalları v2.0.0-rc1
, v2.0.0-rc2
KG oturumu kapatıldıktan sonra ve son olarak KG sürümlerinden geçer v2.0.0
.
Bazen sürümleri haline geldiğinde dalları serbest bırakmak (ve sonra master yapmak) için birleştirilen küçük özellikler için noktalı sürümler yaparız v2.1.0
. Ve düzeltmeler v2.1.1
deseni varsayar .
Ancak soru, bu şubelerin versiyonlanmasıyla ilgili değildir. Bu sürüm şemasını tamamen değiştirmemeyi tercih ederim. Tek değişiklik kalkınma dalı için yani. usta. CI-CD ortamında önceki sürümün üretime geçtiği sürümün nasıl güvenilir bir şekilde gösterebilirim. Bu ideal olarak akıllı git etiketleme yoluyla yapılabilir, ancak ana dalı aşırı derecede etiketlemeyen bir şey tercih edilir.
rc
ekin önünde ne olur ? Bu, major.minor
geliştirme sürümünü dikte eder . rc
ve yapı numarası sadece buna dayanarak elde edilebilir. Üstatta rc
da mantıklı değil çünkü asla üstadı bırakmıyoruz. Sürüm adaylarımızı bugün sürüm dallarında sürüm döngüsünün bir parçası olarak
rc
soneki olacaktır .