Próbuję zaimplementować zmodyfikowany przepływ pracy programu Integration-Manager podobny do opisanego w artykule ProGit.Integracja-Manager Git Workflow przy użyciu Jenkins/Hudson
zamiast integration manager
wykonywania scala, chcę programistom łączyć lokalnie przed opublikowaniem ich kod i chcę Quality Gateway
który wymusza nasze ciągłe normy integracyjne, takie jak minimalny poziom pokrycia kodu i 100 % testów przechodzi, zanim zezwolimy, by kod wszedł do błogosławionego repozytorium do sprawdzenia przez innych programistów. Chodzi o to, że kod w błogosławionym repozytorium zawsze spełnia minimalny standard, który definiujemy i zawsze budujemy.
Chcę, aby Jenkins pełnił rolę bramy jakości, a jedynie przekazywał kod do błogosławionego repozytorium, gdy kompilacja się powiedzie.
Do tej pory skonfigurowałem system, aby dostępne były następujące repozytorium publiczne: błogosławione repozytorium, repozytorium na serwerze kompilacji dla Jenkinsa, które jest nagim repozytywnym dostępem dostępnym przez gitosis i oczywiście własne repozytorium dewelopera .
Mam programistów wycofujących się z błogosławionego repo i popychając do repo integracji. Teraz staram się skłonić Jenkinsa do przekazania udanych buildów z repozytorium integracyjnego do błogosławionego repo.
Do tej pory jedyną dostępną opcją, którą widziałem, podobną do tej, którą próbuję osiągnąć, jest opcja "Push Only If Build Succeeds
" w ustawieniach Wydawcy Git dla działań związanych z budowaniem postów w konfiguracji projektu Jenkinsa. Jednak te opcje nie pozwalają określić adresu URL przycisku lub pilota, do którego należy przejść.
Jak rozumiem, ustawienia Wydawcy Gita popchnęłyby repozytorium Jenkinsa w jego przestrzeń roboczą z powrotem do publicznego repozytorium Jenkinsa, ale chcę popchnąć do innego zdalnego, błogosławionego repozytorium.
Czy ktoś ma jakieś sugestie, jak mogę skłonić Jenkinsa do popierania błogosławionego repo?
EDIT 0: Próbowałem umieszczenie postu krok, aby wykonać polecenie Push do mojego błogosławionego repozytorium. Wydaje się działać, ponieważ nie ma błędów. Jednak żadne zmiany są pchane i dzienniki pokazują, że git myśli wszystko jest aktualne:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 minute 7 seconds
[INFO] Finished at: Fri Nov 18 16:10:50 UTC 2011
[INFO] Final Memory: 19M/45M
[INFO] ------------------------------------------------------------------------
channel stopped
[My Project] $ /bin/sh -xe /tmp/hudson5604254372179801803.sh + git push [email protected]:my-project.git --all
Everything up-to-date
nie wiem dlaczego git myśli, nie ma nic do pchania, bo tam na pewno jest.
Wygląda interesująco, ale jedyną rzeczą, która dodaje, że nasz obecny proces nie ma, jest sformalizowany proces recenzji. Nasze projekty są zmanipulowane, więc jeśli przejdą przez nas znaną wersję, zdadzą testy i inne wymagania, które zdefiniowaliśmy.Nie wydaje się, aby dodać wystarczająco dużo (do naszego procesu), aby usprawiedliwić posiadanie innego narzędzia komplikującego nasze środowisko. Będę pamiętać, że zmieniają się nasze potrzeby, dzięki! – chrisbunney
Rozumiem potrzebę ograniczenia złożoności :-) Chodzi mi o to, że dodaje ona zarówno recenzję, jak i zgłasza wyniki testu CI/Test dla każdej zmiany, zanim zostanie zatwierdzona do twojego błogosławionego repo. –
Tak, to będzie dobrze, gdy dojdziemy do tego etapu :) – chrisbunney