Dla zespołów deweloperów, które praktykują ciągły cykl wydawania, ustanowienie przepływu dostaw może wymagać znacznego wysiłku, jeśli chodzi o koordynację członków zespołu, ustawienie procesów i integrację wielu narzędzi.
Aby zmniejszyć to obciążenie, wprowadzono JetBrains Space Git Flow, kompletny proces, który pomaga osiągnąć lepszą jakość kodu i utrzymać główną gałąź w zielonym kolorze. Korzystając z niego, można skupić się na rozwoju, jednocześnie zapewniając, że twoja główna pozostaje stabilna podczas wdrażania zmian.
Space zapewnia hosting Git, przeglądy kodu, bramki jakości i usługę CI/CD. Wdrożenie przepływu Space Git w projektach jest łatwe, co pozwala na automatyczną kontrolę zmian i utrzymanie bazy kodu w gotowości produkcyjnej.
Wybór strategii gałęzi
Strategia rozgałęziania, którą należy dla swojego zespołu, wpływa na bezpieczeństwo kodu, częstotliwość wydawania funkcji i szybkość dostarczania, co czyni ten wybór kluczowym dla procesu rozwoju.
Istnieje kilka strategii rozgałęziania, które są powszechnie używane przez zespoły, w tym Git flow, feature branches i trunk-based development. Wśród tych strategii, Git flow lub jego warianty są najbardziej popularnymi podejściami. Oto krótki przegląd najbardziej popularnych strategii rozgałęziania.
Git flow
Git flow to strategia rozgałęziania przydatna dla zespołów, które mają jasne procesy wydawania i muszą utrzymywać stabilne środowiska produkcyjne. Poleganie na wielu gałęziach i regułach dodaje jednak wiele złożoności do procesu. Może to być przytłaczające dla nowych członków zespołu i może prowadzić do konfliktów z powodu nieprzestrzegania zasad ciągłej integracji.
GitHub Flow
Przepływ GitHub jest lekką strategią rozgałęziania dobrze dopasowaną do zespołów, które praktykują ciągłe wdrażanie. Strategia ta kładzie nacisk na współpracę, częste wydania i usprawniony proces rozwoju. Ze względu na swoją prostotę, GitHub flow sprawdza się najlepiej w przypadku małych zespołów i projektów. Jednak w miarę wzrostu rozmiaru i złożoności, zarządzanie zmianami w całej bazie kodu za pomocą tego przepływu może stać się wyzwaniem.
Trunk-based development
Rozwój oparty o trunk jest modelem rozgałęzienia, w którym deweloperzy współpracują nad kodem w pojedynczej gałęzi zwanej trunk. Ta strategia wymaga bezpośredniego wdrażania do trunk i współpracy między deweloperami w celu utrzymania stabilnej głównej gałęzi. Ponieważ zmiany są stale integrowane do jednej gałęzi, istnieje większe ryzyko wprowadzenia zmian, które mogą wpłynąć na stabilność całego systemu.
Wprowadzenie do Space Git Flow
Czym jest Space Git flow?
Space Git Flow to strategia rozgałęziania, która jest podobna do GitHub Flow, ale z większym naciskiem na bezpieczeństwo podczas wprowadzania zmian w głównej gałęzi i zdolność do skalowania do dużych projektów i zespołów. Jest to przepływ używany między innymi do rozwoju samego Space.
Główne elementy przepływu Space Git są przedstawione poniżej. Chociaż większość elementów jest opcjonalna, im więcej zostanie wdrożone, tym lepszy i efektywniejszy będzie uzyskany przepływ.
Główna gałąź
Pojedyncza gałąź główna jest zawsze gotowa do produkcji – testy przechodzą, a wszystkie zmiany są weryfikowane. Główna gałąź jest chroniona, co oznacza, że bezpośrednie commity nie są dozwolone.
Gałęzie funkcjonalne
Zmiany w kodzie są dokonywane w oddzielnej gałęzi funkcji. Są one zawsze tworzone na bazie głównej.
Wnioski o scalenie i bramki jakości
Aby scalić zmiany z gałęzi fabularnej do głównej, tworzysz żądanie scalenia, które musi przejść przez bramki jakości. Bramki jakości, które mogą być dostosowane do przepływu pracy zespołu, są zestawami warunków, które muszą być spełnione, aby scalić zmiany:
- Zatwierdzenie w turowym przeglądzie kodu. Recenzent komentuje kod i przekazuje kolejkę autorowi, aby wprowadził poprawki, aż zmiany zostaną ostatecznie zatwierdzone przez recenzenta.
- Pomyślnie zakończone zadanie Space Automation.
- Zewnętrzna kontrola, która przechodzi, jeśli zewnętrzna usługa CI/CD, taka jak TeamCity, zgłasza, że kompilacja jest udana.
Bezpieczne łączenie
Safe Merge jest dodatkowym krokiem bezpieczeństwa przed ostatecznym scaleniem zmian z gałęzi fabularnej do głównej. Space tworzy tymczasowy commit scalający z ostatnimi zmianami z obu gałęzi i używa go do wykonania kontroli jakości za pomocą zadania Automation lub kompilacji TeamCity. Jeśli kontrole przebiegną pomyślnie, zmiany z gałęzi feature są ostatecznie scalane do gałęzi main.
Gałęzie wydań
Jeśli Twój projekt obejmuje publiczne wydania, powinieneś używać gałęzi release utworzonych z main. W razie potrzeby, zmiany z ostatniej chwili są przenoszone z main do konkretnej gałęzi release.
Dlaczego warto korzystać z przepływu Space Git?
Przepływ Space Git przynosi wiele korzyści dla Twojego zespołu i procesu rozwoju. Możesz nawet poczuć te korzyści bez wchodzenia w to wszystko, ponieważ JetBrains Space może odzwierciedlać istniejące repozytorium Git bez konieczności migracji. Możesz przełączyć się z powrotem w dowolnym momencie.
Korzystanie z przepływu Space Git pozwala na:
- Skonfiguruj bramki jakości, aby uzyskać wyższą jakość kodu i stabilną, chronioną gałąź główną, z:
- Safe Merge dla gałęzi fabularnych.
- Obowiązkowymi przeglądami właścicieli w krytycznych obszarach kodu.
- Space Automation lub status kompilacji TeamCity jako kryteriami bramy jakości dla żądań scalenia.
- Wprowadź proces przeglądu kodu, który Twój zespół polubi:
- Przeglądaj kod z IntelliJ IDEA z jego natywną integracją ze Space.
- Wykonuj przeglądy kodu w podróży dzięki aplikacjom Space iOS i Android.
- Utrzymuj swoje przeglądy kodu w porządku i na bieżąco dzięki przejrzystemu modelowi przeglądu opartemu na turach.
Space Git Flow w akcji
Hostuj lub rób lustrzane odbicie swojego repozytorium Git w Space
Możesz użyć Space, aby hostować swój kod źródłowy lub mirrorować swoje repozytorium z GitHub lub innej usługi Git w kilku kliknięciach.
Chroń główną gałąź przed przypadkowymi przesunięciami
Aby zapobiec przypadkowym pchnięciom do głównej gałęzi, skonfiguruj ochronę gałęzi w Space i włącz bramy jakości.
Po skonfigurowaniu go, jedynym sposobem, w jaki zmiana może trafić do main
, jest żądanie scalenia.
Tworzenie gałęzi funkcji
Aby rozpocząć pracę nad nową funkcjonalnością, musisz albo sklonować repozytorium na swoją maszynę, albo użyć zdalnego rozwoju z IDE hostowanym na maszynie wirtualnej w chmurze Space.
W swoim IDE możesz wprowadzić zmiany w swoim kodzie w oddzielnej gałęzi, dodać wiadomość commit, a następnie wypchnąć tę gałąź z powrotem do Space.
Przed połączeniem go z powrotem do main
, będziesz musiał poprosić o recenzję kodu od swoich kolegów z zespołu.
Tworzenie żądania scalenia
Utwórz żądanie scalenia, aby rozpocząć proces przenoszenia nowego kodu do gałęzi głównej. Możesz to zrobić z poziomu IDE JetBrains używając natywnej integracji, lub możesz znaleźć swoją gałąź w Space i stamtąd utworzyć żądanie scalenia.
Możesz ustawić tytuł i opis dla swojego żądania scalenia i zobaczyć zmiany, które będą jego częścią. Bramki jakości wymagają, aby co najmniej jedna osoba przejrzała te zmiany.
Przestrzeń będzie wymagała przeglądu w oparciu o własność kodu
W swoim repozytorium możesz stworzyć specjalny plik o nazwie CODEOWNERS, który określa, kto jest odpowiedzialny za konkretne foldery i pliki. Później ty i twoi współpracownicy będą mogli wybrać właściciela kodu, aby przejrzeć zmiany w ramach bramek jakości.
Poczekaj, aż Twój zespół przejrzy zmiany
Teraz możesz poczekać, aż twoi współpracownicy przejrzą zmiany. Mogą oni dodać komentarze i sugestie lub po prostu zatwierdzić wniosek. Po uzgodnieniu zmian, możesz przystąpić do ich scalania.
Upewnij się, że Twoja budowa jest pomyślna
W przypadku Space istnieje kilka opcji, których możesz użyć, aby upewnić się, że Twój build jest poprawny. Możesz użyć obu z nich dla dodatkowego bezpieczeństwa.
Uruchom kontrolę CI/CD
Po utworzeniu żądania scalenia, Space Automation i/lub zadania CI są uruchamiane w celu zatwierdzenia zmian poprzez zbudowanie kodu i uruchomienie testów. Jako część bramek jakości, zmiany zostaną scalone do main
tylko wtedy, gdy serwer CI/CD może pomyślnie zbudować gałąź funkcji.
Kontrole mogą być ustawione i zakończone zarówno przez Space Automation jak i zewnętrzną usługę CI/CD, taką jak TeamCity.
Uruchom Safe Merge
Możesz użyć Safe Merge przed połączeniem zmian bezpośrednio do głównej gałęzi. Safe Merge działa jak maszyna czasu – uruchamia podgląd tego, jak wyglądałaby główna gałąź z wprowadzonymi zmianami.
Może to być szczególnie przydatne w dużych projektach, ponieważ podczas pracy nad gałęzią funkcji, główna gałąź mogła otrzymać zmiany, które są sprzeczne z przeprowadzonymi zmkianami. Safe Merge pozwala na wychwycenie tych konfliktów przed faktycznym ich połączeniem.
Space tworzy tymczasowy commit i uruchamia CI/CD w Space Automation lub Teamcity. Zmiany są scalane do głównej gałęzi tylko wtedy, gdy build się powiedzie. W przeciwnym razie, połączenie jest odrzucane.