2012-05-29 10 views
10

Mam agenta TeamCity skonfigurowanego do budowania moich projektów XCode i używam github. Chciałbym automatycznie uwzględnić w informacjach o wersji opisy wszystkich oczekujących zatwierdzeń w TeamCity.Jak skomponować dziennik git dla oczekujących zmian w TeamCIty

Jak mogę je pobrać z github i zapisać w teamcity? Po umieszczeniu ich w zmiennej teamcity mogę łatwo dodać je do mojego skryptu kompilacji.

Odpowiedz

2

Można użyć funkcji "Adding or Changing a Build Parameter from a Build Step", aby zaktualizować niektóre parametry kompilacji bezpośrednio z etapu kompilacji.

Potrzebujesz kroku, który będzie wywoływał git log origin/master..master (patrz "git: list commits not pushed to the origin yet"), po pobraniu z GitHub.
(Patrz "Using Team City With Git" dla konfiguracji TeamCity z GitHub, i upewnić się, że TeamCity is runnig with the right account)

+0

Dzięki, wszystkie moje zmiany są wypychane do github już, więc git dziennika pochodzenia/master..master nie będzie działać, ale wciąż widzę te zmiany i TeamCity musi śledzić je jakoś, po prostu nie wiem, jak to zrobić. – mishod

20

to jak skończyło się to zrobić za pomocą skryptu bash:

#!/bin/bash 

curl -o lastBuild.tmp "http://localhost:8111/app/rest/buildTypes/id:bt2/builds/status:SUCCESS" --user rest:rest 
last_commit=`xpath lastBuild.tmp '/build/revisions/revision/@version'| awk -F"\"" '{print $2}'` 

echo "##Last commit = $last_commit" 
# prepare build notes 
NOTES=`git log --pretty=format:"- %s" $last_commit..origin/master` 

echo "this is it:$NOTES" 

kilka wyjaśnień:

  1. Użyj curl, aby pobrać ostatnią pomyślną kompilację z konfiguracji kompilacji. W mojej próbce jest BT2, upewnij się, aby zastąpić go z Ciebie
  2. Użycie XPath/AWK do analizowania odpowiedzi XML i dostać ostatnią wersję git
  3. Używaj git log aby wszystkie zmiany tworzą ostatni build i formatować je tak chcesz . Chciałem po prostu uzyskać opisy commitów.
+0

Interesujące opinie. +1 – VonC

+0

Jak wykorzystać wartość $ NOTES w TeamCity? – Steve

+0

Czy mimo to można uzyskać informacje na temat wersji z miasta zespołu? – Sam

1

znalazłem kilka problemów, kiedy wdrożyła powyższą odpowiedź, które są tutaj aktualizacja:

#!/bin/bash 

curl -o lastBuild.tmp "http://localhost:8111/app/rest/buildTypes/id:%system.teamcity.buildType.id%/builds/status:SUCCESS" --user rest:rest 
last_commit=`xpath lastBuild.tmp '/build/revisions/revision/@version'| awk -F"\"" '{print $2}'` 

git log --pretty=format:"- %%s" $last_commit..origin/master > changes.txt 

Niektóre bardziej szczegółowe rzeczy:

  1. użytku curl aby pobrać ostatnią udaną kompilację z konfiguracji kompilacji. Możesz użyć substytucji teamcity, aby wstawić identyfikator kompilacji.
  2. Należy zauważyć, że polecenie curl polega na tym, że użytkownik TeamCity został nazwany "reszta" z hasłem "reszta". Zaproponuj zmianę hasła.

  3. Użycie XPath/AWK do analizowania odpowiedzi XML, ostatni git wersji

  4. Korzystając git log dostać wszystkie zmiany tworzą ostatni build i formatować je tak chcesz. Chciałem po prostu pobrać opisy commitów i zapisać je w pliku. Musisz upewnić się, że plik zniknie między wersjami, ustawiając git w celu wyczyszczenia. NB: Jeśli budujesz coś innego niż mistrz, będziesz potrzebował właściwej specyfikacji gałęzi tutaj.

  5. Należy pamiętać, że opcja formatu git log używa%, który jest znacznikiem zastąpienia teamcity, a zatem musi zostać zmieniony jako %%.

  6. Należy skonfigurować program TeamCity, aby udostępnić katalog .git. Zobacz Using git commands in a TeamCity Build Step

  7. Zmiany znajdują się teraz w pliku changes.txt.W mojej aplikacji (pytanie do edytora) użyłem tego pliku, aby przesłać do crashlytics dla dystrybucji beta iOS.

Powiązane problemy