Zajmuję się utrzymywaniem dość dużego portfolio aplikacji .NET. W portfolio znajdują się również starsze aplikacje zbudowane na innych platformach - natywnym C ++, formularzach ECLIPS itp.
Mam teraz kompleksową strukturę kompilacji nad NAnt, która zarządza kompilacjami dla wszystkich tych aplikacji. Struktura kompilacji wykorzystuje NAnt do robienia wielu różnych rzeczy:
- Wyciągnij kod z Subversion, a także utwórz tagi w Subversion
- Zbuduj kod, używając MSBuild dla platformy .NET lub innych kompilatorów dla innych platform
- Zajrzyj do plików AssemblyInfo, aby zwiększyć numery wersji
- Usuwa niektóre pliki, które nie powinny być uwzględnione w kompilacjach / wydaniach
- Zwalnia kod do folderów wdrażania
- Zamyka kod w celu utworzenia kopii zapasowej
- Wdróż usługi Windows; zacznij i zatrzymaj ich
- Itp.
Większość tych rzeczy można zrobić za pomocą samego NAnt, ale stworzyliśmy kilka zadań rozszerzających dla NAnt, aby wykonać pewne czynności specyficzne dla naszego środowiska. Ponadto większość powyższych procesów jest uogólniona i ponownie wykorzystywana w wielu różnych skryptach kompilacji aplikacji, dzięki czemu nie powtarzamy logiki. Więc to nie jest prosty kod NAnt i nie są to proste skrypty budowania. Istnieją dziesiątki plików NAnt, które łączą się, aby wykonać kompilację.
Ostatnio byłem niezadowolony z NAnt z kilku powodów: (1) jego składnia jest po prostu okropna - języki programowania nad XML są naprawdę przerażające w utrzymaniu, (2) projekt wydaje się umrzeć na winorośli; ostatnio nie było wielu aktualizacji i wygląda na to, że tak naprawdę nikt nie stoi na czele. Próba uruchomienia go z .NET 4 spowodowała pewne problemy z powodu tego braku aktywności.
Tak więc, mając na uwadze całe to tło, oto moje pytanie. Biorąc pod uwagę niektóre rzeczy, które chcę osiągnąć na podstawie powyższej listy i biorąc pod uwagę, że jestem przede wszystkim w sklepie .NET, ale muszę również budować projekty inne niż .NET, czy istnieje alternatywa dla NAnt, którą powinienem rozważyć przełączać na?
Rzeczy na moim radarze to Powershell (z lub bez psake ), MSBuild sam i rake . Wszystkie mają zalety i wady. Na przykład, czy MSBuild jest wystarczająco wydajny? Pamiętam, jak go używałam wiele lat temu i wydawało się, że nie ma on tak dużej mocy jak NAnt. Czy naprawdę chcę, aby mój zespół uczył się języka Ruby tylko po to, aby tworzyć kompilacje przy użyciu prowizji? Czy psake naprawdę jest wystarczająco dojrzały, aby przypiąć moje portfolio? Czy Powershell jest „zbyt blisko metalu” i skończę z pisaniem własnej biblioteki kompilacji podobnej do psake, aby używać go samodzielnie?
Czy są inne narzędzia, które powinienem rozważyć? Gdybyś był zaangażowany w utrzymanie portfela .NET o znacznej złożoności, jakie narzędzie do budowania byś szukał? Z czego obecnie korzysta Twój zespół?
źródło
Używam Automated Build Studio . Chcę się tego pozbyć.
Jedynym powodem, dla którego nie przełączam się na 100% MS Build lub Team Foundation Build, jest koszt związany z odbudową skryptów, które działają dzisiaj doskonale. Skrypty niewiele się zmieniają ...
Jednak w przypadku następnego produktu będzie to Team Foundation Build bez wahania z następujących głównych powodów (jest ich o wiele więcej):
Ponieważ jesteś również w .NET, gorąco polecam korzystanie z TFB.
Jeśli nie możesz ubiegać się o Bizspark lub nie stać Cię na zakup licencji, możesz wybrać CruiseControl.NET + MS Build i kilka skryptów pomocniczych. W dużej firmie użyteczności publicznej, w której pracowałem, użyliśmy CruiseControl.NET do budowy, testowania, wdrażania i raportowania wszystkich naszych projektów. Obejmowało automatyczne wdrożenie usługi internetowej.
źródło
FinalBuilder może wykonać wszystkie wymagane czynności, z ładnym graficznym interfejsem użytkownika i aplikacją serwera konstruktora, która jest dodawana za darmo.
źródło
Obecnie robię to, co robisz (tj. Od kompilacji do pakowania do wdrożenia) za pomocą MSBuild (> 3000 linii skryptów). CI używa CruiseControl.Net i mam nadzieję, że w przyszłości mogę przejść do TeamBuild. MSBuild jest uciążliwy (programowanie w języku XML), ale jest dość potężny, szczególnie w przetwarzaniu wsadowym i śledzeniu zależności. Jest aktywnie utrzymywany i ulepszany w nowych wersjach .Net i stanowi podstawę systemu kompilacji w Visual Studio i TFS. Również pliki projektów Visual Studio są w rzeczywistości projektami MSBuild i mogę podłączyć się do różnych punktów rozszerzeń. Pakiet rozszerzenia MSBuildma wiele dodatkowych zadań i programowo można łatwo tworzyć własne zadania. Proponuję poważnie przemyśleć MSBuild. Ostatnio uczę się również programu PowerShell i łatwo jest mi wykonywać niektóre zadania, szczególnie na etapie wdrażania, takie jak instalowanie i konfigurowanie certyfikatów, usług IIS itp.
Edytuj projekt MSBuild w VisualStudio, ponieważ rozumie on składnię i daje intellisense. Oto kilka innych dobrych narzędzi, które pomogą w MSBuild.
MSBuild Launch Pad - dla rozszerzeń powłoki
MSBuild SideKicks - Graficzna edycja, wykonywanie i debugowanie skryptów.
źródło
Być może wymagasz zbyt wiele skryptu kompilacji, a za mało serwera kompilacji - dzięki Team City możesz łatwo mieć proste skrypty, które wykonają każdy z twoich pocisków, w dowolnym języku lub stosie, który ma sens i użyj zadań budowania TeamCity, aby w razie potrzeby połącz łańcuchy.
źródło
Zdecydowanie polecam TeamCity, jest łatwy w konfiguracji i konfiguracji. MSBuild jest lepszy od NAnt z tego prostego powodu, że wszystkie pliki projektu / rozwiązania w wersji vs2008 / 2010 są technicznie plikami MSBuild, ale TeamCity można skonfigurować za pomocą MSBuild lub NAnt.
Oczywiście, TeamCity będzie cię kosztować. Osobiście dałem wybór, by wybrać rake, po prostu dlatego, że tarcie za pomocą narzędzi Ruby w porównaniu do innych, chociaż psake jest również dobrym kandydatem.
źródło
Czy zastanawiałeś się nad Hudsonem ? Może to być kłopotliwe, ponieważ wymaga uruchomienia serwera aplikacji Java, ale myślę, że może pozwolić ci na użycie twojego obecnego skryptu NAnt i zbudowanie go przy użyciu innych narzędzi.
źródło