Jestem programistą w dość dużym, zwinnym zespole (mamy ośmiu programistów aktywnie wprowadzających zmiany w jednym repozytorium kodu). Co dwa tygodnie wprowadzamy nową wersję naszego oprogramowania do produkcji. Oto nasz obecny obieg pracy:
- Rozpoczynając nowe zadanie, programiści tworzą „gałąź funkcji” z głównej gałęzi programowania (korzystamy z git ) i pracujemy nad tą nową gałęzią
- Po zakończeniu pracy nad zadaniem programista ponownie łączy gałąź funkcji z gałęzią programowania
- Deweloper łączy gałąź programistyczną z gałąź kontroli jakości.
- Kompilacja jest uruchamiana z gałęzi kontroli jakości. Dane wyjściowe tej kompilacji są wdrażane w naszym środowisku kontroli jakości, aby umożliwić testerom rozpoczęcie testów.
Nasi testerzy często spotykają się z problemami związanymi z tymi nowymi funkcjami, które zostały włączone do działu kontroli jakości. Oznacza to, że w dowolnym momencie środowisko kontroli jakości prawdopodobnie zawiera kilka nowych funkcji - niektóre przetestowane i wolne od błędów, a niektóre uszkodzone. Utrudnia to wydanie, ponieważ rzadko zdarza się, że kompilacja kontroli jakości jest w stanie gotowym do produkcji.
Aby temu zaradzić, próbowaliśmy zainicjować „zamrożenie kontroli jakości”, co oznacza, że programiści nie łączą naszej gałęzi rozwoju z gałęzią kontroli jakości na kilka dni przed wydaniem. Poprawki błędów w środowisku kontroli jakości są wprowadzane bezpośrednio w gałęzi kontroli jakości i łączone z gałęzią programowania. Teoretycznie utrzymuje to nowe, zepsute funkcje poza QA, a jednocześnie pozwala nam naprawić problemy już w QA.
Chociaż ta koncepcja „zamrożenia kontroli jakości” okazała się częściowo skuteczna, trudno ją koordynować, a ludzie często są zdezorientowani, czy wolno im połączyć się z kontrolą jakości. Trudno było również ustalić termin „zamrożenia kontroli jakości” - wszystkim podoba się pomysł, aby między chwilą zawieszenia a wydaniem nieco odetchnąć, ale w praktyce wolą mieć swoją funkcję w następnym wydaniu niż dotrzymać terminu.
Czy istnieje lepszy sposób, aby zapewnić czystą wersję naszych wydań co drugi tydzień?