2015-11-24 14 views
12

Mój zespół korzysta z Visual Studio Team Services do zarządzania naszym kodem źródłowym w repozytorium TFS. Rozwiązanie zawiera wiele aplikacji internetowych. Próbuję skonfigurować ciągłą integrację i ciągłe wdrażanie tego rozwiązania, tak aby każda aplikacja internetowa została wdrożona w poprawnej aplikacji internetowej Azure po pomyślnej kompilacji. Skonfigurowałem BuildDefinition do zbudowania $/MyProduct/MAIN/MySolution.sln. Mam zdefiniowane następujące parametry dla MSBuild oparte na pewnych MSDN artykułów znalazłem na ten temat:za pomocą usług zespołu visual studio, aby zbudować rozwiązanie zawierające wiele aplikacji internetowych i wdrożyć te aplikacje internetowe do lazuru

/p:DeployOnBuild=true 
/p:WebPublishMethod=Package 
/p:PackageAsSingleFile=true 
/p:SkipInvalidConfigurations=true 
/p:PackageLocation="$(build.stagingDirectory)" 

Build kroki obejmują Visual Studio krok budować, krok testu Visual Studio (obecnie wyłączone, aby zminimalizować złożoność), krok Indeks źródeł i symboli publikacji (którego naprawdę nie potrzebuję), a na końcu krok Kopiuj i opublikuj kompilację artefaktów.

Jestem w stanie zbudować to rozwiązanie za pomocą tej konfiguracji. Mogę zobaczyć wyniki kompilacji, dziennik kompilacji, szczegóły kompilacji itp. Kiedy patrzę na utworzone artefakty, widzę dwa artefakty: "drop" i "build.sourceLabel" Jeśli eksploruję plik upuszczania za pomocą Eksploratora artefaktów Znajduję wszystkie moje projekty w tym pliku drop, a dla projektów aplikacji internetowych mogę przejść do folderu webapp1 \ obj \ QA \ Package \ PackageTemp \ bin i zobaczyć wszystkie biblioteki DLL itp. Dla aplikacji internetowej.

To, czego nie widzę, to jeden plik zip na każdą aplikację internetową, na co liczy się funkcja wydania Visual Studio Team Services.

Chciałbym wiedzieć, jak zmodyfikować moją bieżącą konfigurację, aby wygenerować poprawne artefakty z poziomu kompilacji, dzięki czemu mogę utworzyć prawidłowe zadania wdrażania aplikacji Wep wydania, aby wdrożyć każdą aplikację internetową do właściwej aplikacji internetowej. moje środowisko.

Wszystko dzieje się za pomocą Visual Studio 2015 i Visual Studio Online (Team Services).

Odpowiedz

22

Aby przetestować twoją sytuację użyłem Visual Studio 2015 i utworzyłem 3 nowe projekty internetowe w tym samym rozwiązaniu i sprawdziłem w VSTS. Następnie utworzyłem nową kompilację przy użyciu szablonu wdrażania witryny Azure. Wiele osób nie zauważa, że ​​mamy szablony Build and Deployment w oknie dialogowym Create New Build Definition. Powodem, dla którego korzystam z szablonu witryny Azure, jest to, że nigdy nie pamiętam argumentów msbuild, które można przekazać. Możesz po prostu usunąć zadanie wdrożenia aplikacji sieci Web Azure, jeśli zamierzasz używać RM.

Jedną z zmian, które zawsze wprowadzam do argumentów msbuild, jest lokalizacja PackageLocation. Zawsze zmieniam moje na $ (BuildConfiguration). W ten sposób mogę jednocześnie tworzyć Debugowanie i Wydanie.

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(BuildConfiguration)" 

Wreszcie zmieniam zadanie Kopiuj i opublikuj artefakty, aby wyszukać tylko "** \ *. Zip". Pozostaw Copy Root puste i uruchom kompilację. Po ukończeniu kompilacji podczas eksploracji artefaktów będziesz mieć jeden zip na projekt pod [ProjectName]/[Configuration] /projectName.zip.

enter image description here

Jeżeli masz dodatkowe pytania można pingować mnie na Twitterze @DonovanBrown

+0

dzięki za odpowiedź ... Zrobiłem kilka dalszych badań i okazało się, że z nowym projektem/rozwiązanie/webapp, ja może sprawić, że zadziała tak, jak opisałeś. Myślę, że prawdziwym problemem jest to, że nasze projekty i rozwiązania zostały utworzone w VS2013 i .NET 4.0, a następnie zmigrowano/zaktualizowano/etc. Prostym faktem jest, że pliki .sln i .csproj są budowane lokalnie, ale nie w VSO. Zamierzam stworzyć nowe projekty i pliki rozwiązań i sprawdzić, czy to daje lepsze wyniki. –

+0

@MichaelSchulz Pracuję nad tym samym problemem, rozwiązaniem stworzonym w VS2013, a nie w VSO. Wszelkie pomysły, jak to naprawić? – TWilly

+0

Bardzo dobra odpowiedź dla Visual Studio Online RM – user3447136

Powiązane problemy