2013-10-01 12 views
17

Używamy GitLab do zarządzania naszymi repozytoriami. Staramy się postępować zgodnie z procesami GitFlow i jako część tego chcielibyśmy móc budować i przeprowadzać testy na żądanie dowolnej korespondencji seryjnej automatycznie w TeamCity.Gitlab - Tworzenie żądań scalania w serwerze CI

Z tego, co widzę, jest to możliwe w GitLab CI, ale przeniesienie się do tego nie jest dla nas realistyczną opcją.

Widziałem tutoriale o osiągnięciu tego na GitHUB przy użyciu specyfikacji gałęzi, takich jak + refs/pull/*/merge - czy podobna specyfikacja branżowa jest tworzona przez GitLAB?

Używamy wersji 4.2 GitLab ale można uaktualnić jeśli wymagane dla tej funkcji i wersji 8 TeamCity

+2

Myślę, że byłoby to naprawdę przydatne. Generator żądań scalania jest dostępny dla Jenkins, ale nie mogę znaleźć odpowiednika dla TeamCity (https://github.com/jenkinsci/gitlab-merge-request-builder-plugin). Przeglądając źródło tej wtyczki sugerowałem jednak, że jest to o wiele bardziej skomplikowane niż oglądanie czegoś takiego jak + refs/pull/*/merge. –

Odpowiedz

10

mam GitLab 6,3 i TeamCity 8 i muszę budować oddziały funkcji też. Mamy następujący przepływ pracy (jest oparty na git-flow, ale nieznacznie zmieniony zgodnie z naszym cyklem wydawniczym).

Mamy więc gałąź development i jedną pchającą gałąź funkcji o określonej nazwie dev/feature-name-here.

Następnie jeden tworzy żądanie scalenia w GitLab z dev/feature-name-here na development.

TeamCity jest skonfigurowany do automatycznego uruchamiania kompilacji dla każdego oddziału z następującym refspec: +:refs/heads/dev/(*), więc możemy zobaczyć kompilację dla oddziału feature-name-here jest uruchamiany automatycznie.

Następnie mam niestandardowy skrypt osadzony na stronie żądania scalenia GitLab. Wykonuje następujące czynności.

  1. Wykrywa oddział źródłowy i docelowy, patrząc na stronie MR
  2. Z TeamCity REST API wylicza budować która należy do gałęzi docelowej (w TeamCity 8 możemy przypisać zwyczaj budowania tożsamości konfiguracji, aby zbudować tak używamy niektóre nazwy semantyczne, takie jak: devUnit, ,, devWhatever, itp ...)
  3. Tworzy tabelę zawierającą obrazy stanu kompilacji dla gałęzi źródłowej i docelowej dla każdej pokrewnej konfiguracji kompilacji.

Teraz wygląda to tak:

TC Build status at GitLab

Teraz to podejście ma pewne wady, jak gdyby ktoś aktualizuje oddział z innym naciśnięciem nie mogę dowiedzieć się ze strony GitLab jest nowe rewizje jest już zbudowany lub jestem seeng stary status kompilacji, więc muszę kliknąć łącze budowania i sprawdź TeamCity

+0

Mam ten zestaw do budowania żądań scalania do opanowania. Tworzymy gorące poprawki o nazwie "hf/". Teamcity zbiera gałęzie, ale nie jest autobuilding. Czy jest jakieś konkretne ustawienie w wyzwalaczu budowania? – Broncha

+0

Nie robimy nic specjalnego poza standardowymi wyzwalaczami budowania Vcs. Są skonfigurowane bez żadnych filtrów i wyjątków - po prostu uruchom, jeśli wykryte zostaną zmiany. – Olegas

+0

Witam @Olegas, gdzie mogę uzyskać więcej informacji na temat tego, jak to osiągnąć? –