Tworzenie definicji kompilacji, która obsługuje wdrożenie

Autor : Jason Lee

Jeśli chcesz wykonać dowolną kompilację w programie Team Foundation Server (TFS) 2010, musisz utworzyć definicję kompilacji w projekcie zespołowym. W tym temacie opisano sposób tworzenia nowej definicji kompilacji na serwerze TFS i kontrolowania wdrażania w Internecie w ramach procesu kompilacji w programie Team Build.

Ten temat stanowi część serii samouczków opartych na wymaganiach dotyczących wdrażania w przedsiębiorstwie fikcyjnej firmy o nazwie Fabrikam, Inc. W tej serii samouczków użyto przykładowego rozwiązania — rozwiązania Contact Manager — do reprezentowania aplikacji internetowej o realistycznym poziomie złożoności, w tym aplikacji ASP.NET MVC 3, usługi Windows Communication Foundation (WCF) i projektu bazy danych.

Metoda wdrażania w centrum tych samouczków jest oparta na metodzie podzielonego pliku projektu opisanej w opisie pliku projektu, w którym proces kompilacji i wdrażania jest kontrolowany przez dwa pliki projektu — jeden zawierający instrukcje kompilacji, które mają zastosowanie do każdego środowiska docelowego, oraz jeden zawierający ustawienia kompilacji i wdrażania specyficzne dla środowiska. W czasie kompilacji plik projektu specyficzny dla środowiska jest scalony z plikiem projektu niezależnego od środowiska w celu utworzenia pełnego zestawu instrukcji kompilacji.

Przegląd zadań

Definicja kompilacji to mechanizm, który kontroluje, jak i kiedy są wykonywane kompilacje dla projektów zespołowych w programie TFS. Każda definicja kompilacji określa:

  • Elementy, które chcesz skompilować, takie jak pliki rozwiązań programu Visual Studio lub pliki projektów niestandardowych Microsoft Build Engine (MSBuild).
  • Kryteria określające, kiedy ma nastąpić kompilacja, takie jak wyzwalacze ręczne, ciągła integracja (CI) lub zaewidencjonowane bramki.
  • Lokalizacja, do której kompilacja zespołowa powinna wysyłać dane wyjściowe kompilacji, w tym artefakty wdrożenia, takie jak pakiety internetowe i skrypty bazy danych.
  • Czas przechowywania każdej kompilacji.
  • Różne inne parametry procesu kompilacji.

Uwaga

Aby uzyskać więcej informacji na temat definicji kompilacji, zobacz Definiowanie procesu kompilacji.

W tym temacie pokazano, jak utworzyć definicję kompilacji korzystającą z ciągłej integracji, aby kompilacja była wyzwalana po zaewidencjonowaniu nowej zawartości przez dewelopera. Jeśli kompilacja powiedzie się, usługa kompilacji uruchamia niestandardowy plik projektu w celu wdrożenia rozwiązania w środowisku testowym.

Po wyzwoleniu kompilacji należy wykonać następujące akcje:

  • Najpierw kompilacja zespołowa powinna utworzyć rozwiązanie. W ramach tego procesu kompilacja zespołu wywoła potok publikowania sieci Web (WPP) w celu wygenerowania pakietów wdrażania sieci Web dla każdego projektu aplikacji internetowej w rozwiązaniu. Kompilacja zespołowa będzie również uruchamiać wszystkie testy jednostkowe skojarzone z rozwiązaniem.
  • Jeśli kompilacja rozwiązania zakończy się niepowodzeniem, kompilacja zespołowa nie powinna podejmować dalszych działań. Błędy testów jednostkowych powinny być traktowane jako niepowodzenie kompilacji.
  • Jeśli kompilacja rozwiązania zakończy się pomyślnie, kompilacja zespołowa powinna uruchomić niestandardowy plik projektu, który kontroluje wdrożenie rozwiązania. W ramach tego procesu program Team Build wywoła narzędzie Internet Information Services (IIS) Web Deployment Tool (Web Deploy) w celu zainstalowania spakowanych aplikacji internetowych na docelowych serwerach sieci Web i wywoła narzędzie VSDBCMD.exe w celu uruchomienia skryptów tworzenia bazy danych na docelowych serwerach baz danych.

Ilustruje to proces:

Ilustruje powyższy proces.

Przykładowe rozwiązanie programu Contact Manager zawiera niestandardowy plik projektu MSBuild Publish.proj, który można uruchomić z poziomu programu MSBuild lub kompilacji zespołowej. Zgodnie z opisem w opisie procesu kompilacji ten plik projektu definiuje logikę, która wdraża pakiety internetowe i bazy danych w środowisku docelowym. Plik zawiera logikę pomijającą proces tworzenia i pakowania, jeśli jest uruchomiony w kompilacji zespołowej, pozostawiając tylko zadania wdrażania do uruchomienia. Jest to spowodowane tym, że w przypadku automatyzacji wdrażania w ten sposób zazwyczaj należy upewnić się, że rozwiązanie zostanie pomyślnie skompilowanych i przejdzie wszystkie testy jednostkowe przed rozpoczęciem procesu wdrażania.

W następnej sekcji wyjaśniono, jak zaimplementować ten proces, tworząc nową definicję kompilacji.

Uwaga

Ta procedura — w której pojedynczy zautomatyzowany proces kompiluje, testuje i wdraża rozwiązanie — prawdopodobnie będzie najbardziej odpowiednia do wdrożenia w środowiskach testowych. W przypadku środowisk przejściowych i produkcyjnych najprawdopodobniej chcesz wdrożyć zawartość z poprzedniej kompilacji, która została już zweryfikowana i zweryfikowana w środowisku testowym. To podejście zostało opisane w następnym temacie Wdrażanie określonej kompilacji.

Kto wykonuje tę procedurę?

Zazwyczaj administrator TFS wykonuje tę procedurę. W niektórych przypadkach lider zespołu deweloperów może przejąć odpowiedzialność za kolekcję projektów zespołowych na serwerze TFS. Aby utworzyć nową definicję kompilacji, musisz być członkiem grupy Administratorzy kompilacji kolekcji projektów projektu zespołowego zawierającego twoje rozwiązanie.

Tworzenie definicji kompilacji dla ciągłej integracji i wdrażania

W następnej procedurze opisano sposób tworzenia definicji kompilacji wyzwalanej przez ciągłą integrację. Jeśli kompilacja zakończy się pomyślnie, rozwiązanie zostanie wdrożone przy użyciu logiki w niestandardowym pliku projektu MSBuild.

Aby utworzyć definicję kompilacji dla ciągłej integracji i wdrożenia

  1. W programie Visual Studio 2010 w oknie Team Explorer rozwiń węzeł projektu zespołowego, kliknij prawym przyciskiem myszy pozycję Kompilacje, a następnie kliknij polecenie Nowa definicja kompilacji.

    W programie Visual Studio 2010 w oknie Team Explorer rozwiń węzeł projektu zespołowego, kliknij prawym przyciskiem myszy pozycję Kompilacje, a następnie kliknij polecenie Nowa definicja kompilacji.

  2. Na karcie Ogólne nadaj definicji kompilacji nazwę (na przykład DeployToTest) i opcjonalny opis.

  3. Na karcie Wyzwalacz wybierz kryteria, dla których chcesz wyzwolić nową kompilację. Jeśli na przykład chcesz skompilować rozwiązanie i wdrożyć je w środowisku testowym za każdym razem, gdy deweloper zaewidencjonuje nowy kod, wybierz pozycję Ciągła integracja.

  4. Na karcie Build Defaults (Wartości domyślne kompilacji kompilacji ) w polu Kopiuj dane wyjściowe kompilacji do następującego folderu drop wpisz ścieżkę Universal Naming Convention (UNC) folderu upuszczania (na przykład \TFSBUILD\Drops).

    Na karcie Build Defaults (Wartości domyślne kompilacji kompilacji) w polu Kopiuj dane wyjściowe kompilacji do następującego folderu drop wpisz ścieżkę Universal Naming Convention (UNC) folderu upuszczania (na przykład \TFSBUILD\Drops).

    Uwaga

    Ta lokalizacja upuszczania przechowuje kilka kompilacji w zależności od skonfigurowanych zasad przechowywania. Jeśli chcesz opublikować artefakty wdrożenia z określonej kompilacji do środowiska przejściowego lub produkcyjnego, znajdziesz je w tym miejscu.

  5. Na karcie Proces na liście rozwijanej Plik procesu kompilacji pozostaw zaznaczoną pozycję DefaultTemplate.xaml . Jest to jeden z domyślnych szablonów procesów kompilacji, które są dodawane do wszystkich nowych projektów zespołowych.

  6. W tabeli Build process parameters (Parametry procesu kompilacji ) kliknij wiersz Items to Build (Elementy do kompilacji ), a następnie kliknij przycisk wielokropka .

    W tabeli Build process parameters (Parametry procesu kompilacji) kliknij wiersz Items to Build (Elementy do kompilacji), a następnie kliknij przycisk wielokropka.

  7. W oknie dialogowym Elementy do kompilacji kliknij przycisk Dodaj.

  8. Przejdź do lokalizacji pliku rozwiązania, a następnie kliknij przycisk OK.

    Przejdź do lokalizacji pliku rozwiązania, a następnie kliknij przycisk OK.

  9. W oknie dialogowym Elementy do kompilacji kliknij przycisk Dodaj.

  10. Na liście rozwijanej Items of type (Elementy typu ) wybierz pozycję MSBuild Project files (Pliki projektu MSBuild).

  11. Przejdź do lokalizacji niestandardowego pliku projektu, za pomocą którego kontrolujesz proces wdrażania, wybierz plik, a następnie kliknij przycisk OK.

    Przejdź do lokalizacji niestandardowego pliku projektu, za pomocą którego kontrolujesz proces wdrażania, wybierz plik, a następnie kliknij przycisk OK.

  12. Okno dialogowe Elementy do kompilacji powinno teraz zawierać dwa elementy. Kliknij przycisk OK.

    Okno dialogowe Elementy do kompilacji powinno teraz zawierać dwa elementy. Kliknij przycisk OK.

  13. Na karcie Proces w tabeli Parametry procesu kompilacji rozwiń sekcję Zaawansowane .

  14. W wierszu Argumenty programu MSBuild dodaj wszystkie argumenty wiersza polecenia programu MSBuild wymagane przez dowolny element do skompilowania. W scenariuszu rozwiązania Contact Manager wymagane są następujące argumenty:

    /p:DeployOnBuild=true;DeployTarget=Package;
       TargetEnvPropsFile=EnvConfig\Env-Dev.proj
    

    W wierszu Argumenty programu MSBuild dodaj wszystkie argumenty wiersza polecenia programu MSBuild wymagane przez dowolny element do skompilowania.

  15. W tym przykładzie:

    1. Argumenty DeployOnBuild=true i DeployTarget=package są wymagane podczas tworzenia rozwiązania Contact Manager. Spowoduje to, że program MSBuild utworzy pakiety wdrażania sieci Web po utworzeniu każdego projektu aplikacji internetowej zgodnie z opisem w temacie Kompilowanie i pakowanie projektów aplikacji internetowych.
    2. Argument TargetEnvPropsFile jest wymagany podczas kompilowania pliku Publish.proj . Ta właściwość wskazuje lokalizację pliku konfiguracji specyficznego dla środowiska, zgodnie z opisem w opisie procesu kompilacji.
  16. Na karcie Zasady przechowywania skonfiguruj liczbę kompilacji każdego typu, które mają być przechowywane zgodnie z wymaganiami.

  17. Kliknij pozycję Zapisz.

Kolejkowanie kompilacji

W tym momencie utworzono co najmniej jedną nową definicję kompilacji. Zdefiniowany proces kompilacji będzie teraz uruchamiany zgodnie z wyzwalaczami określonymi w definicji kompilacji.

Jeśli definicja kompilacji została skonfigurowana do korzystania z ciągłej integracji, możesz przetestować definicję kompilacji na dwa sposoby:

  • Zaewidencjonuj zawartość projektu zespołowego, aby wyzwolić automatyczną kompilację.
  • Ręczne kolejkowanie kompilacji.

Aby ręcznie utworzyć kompilację w kolejce

  1. W oknie Team Explorer kliknij prawym przyciskiem myszy definicję kompilacji, a następnie kliknij polecenie Kolejka nowa kompilacja.

    W oknie Team Explorer kliknij prawym przyciskiem myszy definicję kompilacji, a następnie kliknij polecenie Kolejka nowa kompilacja.

  2. W oknie dialogowym Kompilacja kolejki przejrzyj właściwości kompilacji , a następnie kliknij pozycję Kolejka.

    W oknie dialogowym Kompilacja kolejki przejrzyj właściwości kompilacji, a następnie kliknij pozycję Kolejka.

Aby przejrzeć postęp i wynik kompilacji — niezależnie od tego, czy został on wyzwolony ręcznie, czy automatycznie — kliknij dwukrotnie definicję kompilacji w oknie Team Explorer . Spowoduje to otwarcie karty Eksplorator kompilacji .

Aby przejrzeć postęp i wynik kompilacji, niezależnie od tego, czy został on wyzwolony ręcznie, czy automatycznie, kliknij dwukrotnie definicję kompilacji w oknie Team Explorer.

W tym miejscu można rozwiązywać problemy z nieudanymi kompilacjami. Jeśli klikniesz dwukrotnie pojedynczą kompilację, możesz wyświetlić informacje podsumowania i kliknąć, aby uzyskać szczegółowe pliki dziennika.

Jeśli klikniesz dwukrotnie pojedynczą kompilację, możesz wyświetlić informacje podsumowania i kliknąć, aby uzyskać szczegółowe pliki dziennika.

Te informacje mogą służyć do rozwiązywania problemów z nieudanymi kompilacjami i rozwiązywania problemów przed podjęciem kolejnej kompilacji.

Uwaga

Kompilacje, które wykonują logikę wdrażania, mogą zakończyć się niepowodzeniem, dopóki serwer kompilacji nie otrzyma żadnych uprawnień wymaganych w środowisku docelowym. Aby uzyskać więcej informacji, zobacz Konfigurowanie uprawnień dla wdrożenia kompilacji zespołu.

Monitorowanie procesu kompilacji

Serwer TFS oferuje szeroką gamę funkcji, które ułatwiają monitorowanie procesu kompilacji. Na przykład tfS może wysłać wiadomość e-mail lub wyświetlić alerty w obszarze powiadomień paska zadań po zakończeniu kompilacji. Aby uzyskać więcej informacji, zobacz Run and Monitor Builds (Uruchamianie i monitorowanie kompilacji).

Podsumowanie

W tym temacie opisano sposób tworzenia definicji kompilacji w programie TFS. Definicja kompilacji jest skonfigurowana pod kątem ciągłej integracji, więc proces kompilacji jest uruchamiany za każdym razem, gdy deweloper zaewidencjonuje zawartość projektu zespołowego. Definicja kompilacji wykonuje niestandardowy plik projektu MSBuild w celu wdrożenia pakietów internetowych i skryptów bazy danych w środowisku serwera docelowego.

Aby wdrożenie automatyczne powiodło się w ramach procesu kompilacji, należy udzielić odpowiednich uprawnień do konta usługi kompilacji na docelowych serwerach sieci Web i docelowym serwerze bazy danych. W ostatnim temacie w tym samouczku, Konfigurowanie uprawnień do wdrażania kompilacji zespołu, opisano sposób identyfikowania i konfigurowania uprawnień wymaganych do zautomatyzowanego wdrażania z serwera kompilacji zespołu.

Dalsze informacje

Aby uzyskać więcej informacji na temat tworzenia definicji kompilacji, zobacz Tworzenie podstawowej definicji kompilacji i Definiowanie procesu kompilacji. Aby uzyskać więcej wskazówek dotyczących kompilacji kolejkowania, zobacz Kolejkowanie kompilacji.