2012-10-15 14 views
22

Obecnie pracuję nad projektem (tylko ja) i już wiem, jak radzić sobie z wersjami. Używam klasycznego <major>.<minor>.<build or patch>.Najlepszy sposób na połączenie Git z .NET podczas wersjonowania

Mam problem jest, że chcę mieć tagów w niektórych moich zobowiązuje wskazując na odpowiednich wersjach, ale nie chcę, aby to zrobić ręcznie.

Teraz jestem aktualnie robi:

  • Jeśli mam zamiar zwolnić v0.2.13, zmienić AssemblyInfo.cs i ustawić tę wersję
  • zatwierdzić zmiany na Git
  • Dodaj znacznik v0.2.13 (ręcznie) na Git
  • Zbuduj projekt
  • Utwórz plik .zip (nie cały czas) i nadaj mu nazwę: ProjectName v0.2.13

Czy robię to źle?

Mogłabym łatwo utworzyć skrypt, aby wykonać ostatni krok automatycznie, ale zastanawiam się, czy istnieje dobra praktyka dotycząca automatyzacji drugiej części?

+1

http://www.tigraine.at/2009/10/27/symplifying-releases-through-git/ oraz https://github.com/Tigraine/elms-connector ilustrują podobne podejście. Bez automatycznego zatwierdzania. – VonC

+0

@VonC Popatrzę teraz na to ... –

Odpowiedz

0

Mam powodzeniem stosowane następujące kroki, aby osiągnąć coś podobnego do:

  • nowa nowe zobowiązuje się do udostępnionego git repo
  • serwera TeamCity sprawdza kod, przeprowadza testy i buduje projekt
  • Jeśli Pomyślnie, TeamCity również przenosi/usuwa/pakuje pliki dla pakietu wdrożeniowego
  • Następnie przesyła FTP zip do obszaru przemieszczania wdrożenia, gdzie może być ręcznie wdrażany (może to być w pełni zautomatyzowane, ale nasza konfiguracja była dziwna)

Możesz użyć haka po zatwierdzeniu, aby oznaczyć swój oddział i przejść do serwera TeamCity.

1

Używam Makefiles do wszystkiego po zatwierdzeniu.

W zależności od tego, jak działa Twój system kompilacji, możesz dodać docelowe "wydanie", które oznacza bieżącą gałąź i przesuwa ten znacznik. Dodajesz także cel "pakietowy", który zależy od celów "budowania" i "zwolnienia".

Jeśli to nie działa, po prostu utwórz własny plik Makefile. Możesz inaczej nazwać swój "Makefile" lub nie.

1

Jeśli nie są w stanie korzystać z serwera kompilacji, to chyba najlepszy sposób, aby to zrobić ręcznie. Jednakże, jeśli masz czas, bardzo polecam uzyskać jakiś serwer budowania na miejscu. Odnosimy sukces z TeamCity.Jeśli masz go skonfigurowanego do śledzenia twojego repozytorium, istnieją sposoby na zrobienie assembly info patching, tagging i rozwój po instalacji (istnieje kilka możliwych linków dla tych, polecam po prostu trafienie w documentation).

Znalazłem this post bardzo pomocne przy konfigurowaniu naszej wersji; możesz prawie całkowicie wykluczyć bity NuGet i mieć przyzwoite informacje. Jeśli chodzi o konfigurowanie TeamCity, po prostu zrób szybkie wyszukiwanie "Samouczek instalacji TeamCity" i powinieneś mieć mnóstwo zasobów. Powodzenia!

8

Mam skrypt kompilacji w MSBuild, który automatycznie pobiera git commit aktualnie wyrejestrowany, a następnie dodaje atrybut jak to w czasie kompilacji do zespołu:

[assembly: AssemblyInformationalVersion("0.2.13+e3a6f2c1")] 
[assembly: AssemblyVersion("0.2")] 
[assembly: AssemblyFileVersion("0.2.13")] 

Część liczbowa wersja pochodzi z plik version.txt, który odczytuje mój skrypt kompilacji.

Wersja złożona jest pozbawiona trzeciego oktetu, ponieważ unika zwiększania wymagań przekierowania podczas zwiększania numeru kompilacji. AssemblyFileVersion zawiera wszystkie dane dozwolone przez ten atrybut, a AssemblyInformationVersion może być dowolnym łańcuchem, który chcesz, więc użycie semantic versioning do dołączenia identyfikatora zatwierdzenia git pozwala ci dokładnie wskazać, która wersja źródłowa zbudowała ten projekt.

Po pomyślnym zakończeniu kompilacji można dodać znacznik v0.2.13, jeśli chcesz. Osobiście, jak tylko zbuduję wersję ostateczną, zwiększam plik version.txt, aby wszystkie kolejne kompilacje miały następny wyższy numer wersji. Każda kompilacja będzie miała to miejsce, dopóki nie wydam tej wersji, oznaczając commit, zwiększając ponownie plik version.txt i powtarzam.

Nawiasem mówiąc, ciąg znaków AssemblyInformationalVersion pojawia się we właściwościach pliku z Eksploratora Windows, więc zapewnia to gwarantowany sposób przejścia z dowolnego zbudowanego pliku binarnego do zgodnego oryginalnego kodu źródłowego. Ponadto, niestety, to podejście powoduje, że csc.exe zgłasza AL ???? ostrzeżenie dotyczące kompilacji, ponieważ format wersji semantycznej nie jest zgodny ze składnią x.y.z. Nie oznacza to, że coś jest zepsute, i po prostu zignorowałem ostrzeżenie.

Nigdy nie rozpakowuję bezpośrednio źródeł, ponieważ jest to zbędne z odpowiedzialnością kontroli źródła. Przynajmniej jeśli twoje źródło jest hostowane przez jakąś usługę online (nawet w twoim prywatnym intranecie), większość hostów git oferuje opcję "w locie" pobierania zip dla danego identyfikatora commit.

Powiązane problemy