2015-05-23 17 views
14

Próbuję użyć informacji montażowej Łatacz tworzy kilka wersji coś takiego:TeamCity 9: Jak dodać git krótki skrót do informacji montażowej patcher

1.2.3.1a3c19e

którym ostatni bit jest skrót skrótu git.

Próbowałem użyć kroku kompilacji skryptu powershell, aby utworzyć krótki skrót (ponieważ nie mogę znaleźć zmiennej, która go ma) i dodać go do zmiennej systemowej, ale ten krok kompilacji wydaje się być uruchamiany po zainstalowaniu patcha informacji, więc nie ma większego sensu.

Odpowiedz

27

Jeśli chcesz zapisać to w polu Informacje o zespole, można to zrobić, ale do wygenerowania numeru kompilacji wymagana jest osobna konfiguracja kompilacji. Jedynym celem tego kroku jest utworzenie numeru kompilacji z dołączonym hashem.

1. Utwórz konfigurację kompilacji do generowania krótki hash

Build Config

2. Dodać krok, aby wygenerować hash

Build Config

3. Dodać parametr do zapisania skrótu

Param

4. Dodać drugą konfigurację kompilacji i dodać zależność do pierwszego

Dependency

5. Teraz można spożywać parametr w kroku zależnej

Consume

6. W tym momencie można go używać w informacji montażowej Patcher

Patcher

alternatywą jest to, aby napisać swój numer kompilacji z powrotem do Git użyciu funkcji VCS znakowanie kompilacji.

Labeling

Nadzieja to pomaga.

+1

Po prostu chcemy dodać, że oddzielna konfiguracja kompilacji jest potrzebna, ponieważ patcher informacji o złożeniu działa po zebraniu zmian z VCS i przed rozpoczęciem kroków. Istnieje sposób, w jaki można pozbyć się oddzielnej konfiguracji dla powyższego przykładu, używając skryptu powershell, który przechodzi przez wszystkie pliki AssemblyInfo.cs i zastępuje zamiast patcha z informacjami o złożeniu: '(Get-childitem -include AssemblyInfo.cs -recurse) Foreach-Object {Set-Content -Encoding UTF8 $ _ ((Get-content $ _) -replace "1.0.0.0", "1.0.0-% GitShortHash%")} '. –

+0

@Alexey. Zgadzam się, że mógłbyś napisać skrypt, aby to zrobić w powershell, ale byłbym bardzo ostrożny, aby upuścić ten kod, ponieważ jest bardziej prawdopodobne, że przerwie on kompilację. Domyślnie AssemblyInfo.cs zawiera AssemblyVersion i AssemblyFileVersion, które nie mogą się skompilować, jeśli użyłeś krótkiego skrótu. AssemblyInfo.cs potrzebowałoby najpierw "prepping" dla tego skryptu, aby nie złamać kompilacji. –

+0

@DevOps, masz rację w 100%. Zostawiłem komentarz i przykład skryptu tylko po to, by zauważyć, że można to zrobić bez dodawania kolejnej konfiguracji, co może być problematyczne dla smbd z powodu ograniczeń licencji. Wysłany przeze mnie skrypt powershell musi zostać zaktualizowany, aby zastąpić wersję tylko dla wymaganego atrybutu. –

0

Jeśli masz na myśli zestaw .NET, nie możesz użyć krótkiego skrótu git jako numeru wersji tylko dlatego, że akceptuje tylko liczby. Możesz to sprawdzić samodzielnie i umieścić wersję powyżej na AssemblyVersion. Założę się, że twoja aplikacja nie zostanie skompilowana. Zamiast tego możesz użyć zmiennej% build.counter% z teamcity jako numeru wersji.

+3

To prawda, że ​​nie można zapisać tego skrótu do niektórych pól. Zakładam, że celem jest zawiązanie wersji złożonej do zatwierdzenia git, w którym to przypadku byłoby sens pisać do wersji informacyjnej Assembly, ponieważ akceptuje ciąg znaków. –