7

Nasz cykl rozwojowy/release działa tak:Jak mogę przekonać TeamCity do automatycznego połączenia gałęzi funkcji Git z master i nieudanej kompilacji w przypadku konfliktów scalania?

  1. Twórca tworzy gałąź funkcji, realizuje funkcję
  2. Twórca wskazuje funkcję jest gotowy do akceptacji testowania (UAT)
  3. Tester wykorzystuje funkcji gałąź i akceptuje (lub odrzuca) cECHA

akceptowanych cech są następnie łączone w gałęzi głównej przez tester i dlatego zostanie uwolnione podczas następnego rel cykl łatwości (wdrażamy kod trunk/master tygodniowo).

Występują frustracje związane z konfliktami seryjnymi, ponieważ do czasu, gdy tester zastosuje funkcję UAT i odkrył, że nie będzie się ona łączyć w sposób czysty, programista, który w niej pracował, przeszedł zwykle do czegoś innego.

Rozważamy rozwiązanie polegające na tym, że wszystkie gałęzie funkcji są automatycznie łączone przez TeamCity, z bieżącym gałęzią główną, a każda kompilacja powodująca konflikt scalania jest uważana za nieudaną kompilację - to da nam wczesną widoczność na problematyczne scalenia więc możemy je naprawić wcześniej.

TeamCity nie ma wbudowanej obsługi tego przepływu pracy (to znaczy, gdy naciśnięcie ma miejsce w oddziale X, moduł realizacji transakcji, scalenie gałęzi X na niej, kompilacja, test jednostki, utwórz pakiet). Czy ktoś utworzył podobny przepływ pracy za pomocą TeamCity i Github - może używając niestandardowych celów msbuild?

EDIT: powinienem wyjaśnić, że używamy GitHub ale obecnie używasz żądania Pull - brzmi jak to jest coś, co powinienem zbadać. :)

+1

Świetne pytanie Dylan, sam chcę rozwiązać ten sam problem. Kiedy wspominasz GitHub w ostatnim zdaniu, masz na myśli Git zamiast tego? Ponieważ GitHub już implementuje tę funkcję. Już korzystam z niego w projektach open source. –

Odpowiedz

2

Jeśli używasz GitHub i Pull kupna następnie sprawdzić Hadi Haririego blogu o tym, jak dostać żądania ściągania po to została połączona z Master:

http://hadihariri.com/2013/02/06/automatically-building-pull-requests-from-github-with-teamcity/

Github dokłada automatyczne scalania dla każdego żądania rozwijanego i otrzymaną seryjnej jest dostępny (choć dość dużo nieudokumentowane) jako

git fetch origin +refs/pull/298/merge 

gdzie id jest wyciągnąć wniosek 298. a więc wszystkie scalone wnioski wysuwane mogą być pobrane asterisk w miejsce o f identyfikator w Teamcity i być budowany automatycznie. Specyfikacja oddział będzie wyglądać następująco:

+refs/pull/*/merge 

EDIT: Mówisz, że nie używasz żądania ciągnąć więc myślę, że można to zrobić z niektórych poleceń git. Nie próbowałem tego sam, więc to tylko kilka wskazówek, które pomogą Ci zacząć.

  1. Użyj branch specification feature w Teamcity, aby uzyskać oddział. Ustaw checkout mode, aby sprawdzić kod na agencie
  2. W kroku kompilacji połącz gałąź master z gałęzią docelową. Jeśli wzorzec nie jest dostępny w agencie, być może trzeba go najpierw pobrać. Jeśli pojawią się błędy, kompilacja nie powiedzie się.

Aby sprawdzić, czy nie występują konflikty, jeden z nich powinien zadziałać: strategies.

+0

@ Dylan-Beattie Zamierzasz użyć Żądań Pull w Githubie lub myślisz o wprowadzeniu własnego przepływu w Teamcity? –

+0

Funkcja żądania ściągania Githuba jest prawie dokładnie tym, czego szukaliśmy - jesteśmy w trakcie migracji z Subversion i nie jesteśmy jeszcze w stanie uruchomić wszystkich dzwonków i gwizdków Githuba :) –

+0

@DanielLee Nie widzę Zbuduj opcję krok, która pozwala połączyć master w daną gałąź. Jak Ty to robisz? –