6

Jestem w trakcie tworzenia aplikacji umożliwiającej automatyzację wdrożeń aplikacji (https://github.com/twistedtwig/AutomdatedDeployments#readme).jak wdrożyć pakiet pocztowy MSbuild lokalnie lub zdalnie, bez konieczności zaangażowania IIS.

Idea polega na tym, że wszystko jest pod kontrolą źródła, plików aplikacji, konfiguracji aplikacji oraz konfiguracji usług IIS. Moja aplikacja pozwala na automatyczne wdrażanie rozwiązania (dodanie pliku budowania postu do pliku sln/proj), po kompilacji na maszynie programistycznej. Umożliwi to automatycznemu wdrażaniu serwera CI na swoim komputerze, a także serwerowi CI przesyłając udane kompilacje do QA/Test/serwerów produkcyjnych. Jednym z problemów, z jakimi mam do czynienia w msdeploy, jest wymaganie, aby IIS był konfigurowany z witryną/aplikacją przed ręką (którą moja aplikacja próbuje obejść).

Do tej pory mogę tworzyć, aktualizować i usuwać pule aplikacji, strony internetowe i aplikacje za pośrednictwem plików konfiguracyjnych automatycznie. Mogę zsynchronizować pliki i foldery dobrze. Ostatnim krokiem było użycie przełącznika/target: package w msbuild w celu utworzenia czystych struktur plików dla wdrożeń internetowych. Na przykład chciałbym uruchomić polecenie jak:

msbuild.exe myMvcSite.csproj /target:clean /target:package /p:Configuration=Release /p:_PackageTempDir=C:\websites\mySite /p:PackageLocation=C:\dropLocation\mySite.zip 

Stwarza to piękny plik zip z wewnętrzną ścieżką plików „C_C \ wbesites \ mojawitryna” gotowy (jak rozumiem) być zsynchronizowane z produkcją serwer.

Mój problem polega na tym, jak wdrażam ten plik zip. Chcę, aby była niezależna od wszelkich informacji IIS, tj. Po prostu przesuwa pliki/foldery do lokalizacji (na komputerze lokalnym dla programistów lub zdalnych w celu testowania itp.). Konfiguracja usług IIS z pulami aplikacji i witrynami itp. Byłaby zarządzana osobno. Niektóre z poleceń (i ich wyjściu) próbowałem są poniżej:

"C:\Program Files\IIS\Microsoft Web Deploy v2\msdeploy.exe" -verb:sync -source:package="C:\Temp\deploy\installer\test\testPackage.zip" -dest:auto 
Info: Adding sitemanifest (sitemanifest). 
Error: The application pool that you are trying to use has the 'managedRuntimeVersion' property set to 'v2.0'. This application requires 'v4.0'. 
Error count: 1. 

i

"C:\Program Files\IIS\Microsoft Web Deploy v2\msdeploy.exe" -verb:sync -source:package="C:\website\installer\testPackage.zip" -dest:contentpath=C:\temp\mytest 
Error: Source (sitemanifest) and destination (contentPath) are not compatible for the given operation. 
Error count: 1. 

Pierwsze polecenie Próbuję niech to rozpakować pliki z budową to ma. Wydaje się jednak być zaniepokojony materiałem z puli aplikacji (której nie chcę dotykać).

Po drugie próbuję obejść bit "auto", ale to też nie jest szczęśliwy.

Staram się znaleźć wiele informacji na temat tego procesu.

Jedyny sposób, w jaki mogę zobaczyć, jak mogę to osiągnąć w tej chwili, to nie używać msdeploy do tego, ale stworzyć własne zadanie zintegrowania struktury plików i zsynchronizowania pliku (nie idealne).

+0

Co ty odbieranie błąd na drugim polecenia? –

+0

Błąd: Źródło (sitemanifest) i miejsce docelowe (contentPath) nie są kompatybilne dla danej operacji. Liczba błędów: 1. (drugi blok kodu w moim pytaniu). – Jon

Odpowiedz

1

Skończyłem kodowanie wokół tego problemu, zamiast być w stanie go rozwiązać.

biorę pakiet Kod pocztowy:

  1. Rozpakuj w miejscu temp
  2. znalezienia końcowy ścieżki będzie zamiar (normalnie od archive.xml)
  3. sprawdzić, czy jestem scalanie foldery lub wykonanie czystej instalacji (np. najpierw usuń folder docelowy).
  4. kopiować/wypychać pliki do lokalizacji końcowej (zwykle z msdeploy).

I open source moje rozwiązanie to: https://github.com/twistedtwig/AutomatedDeployments