Ako nasadiť ASP.NET Framework aplikácie do Windows kontajnerov v Azure pomocou VSTS – krok za krokom.

Voľne nadviažem na blog „Ako kontajnerizovať ASP.NET Framework aplikácie v Azure – krok za krokom“, v ktorom som popísal, ako vytvoriť v Azure prostredie pre Windows kontajnery. Pre nasadenie webovej aplikácie do Windows kontajnera som použil jednoduché vykopírovanie projektového adresára z vývojárskeho počítača do priečinku servera hostujúceho kontajnery. Použil som tento postup pre tímový vývoj nevhodný len na otestovanie fukčnosti vytvoreného kontajnerizačného prostredia. Je čas pridať návod, ako v tíme vyvíjanú ASP.NET Framework aplikáciu automaticky nasadiť do Windows kontajnera a priebežne ju tam aj pri zmenách automaticky  aktualizovať.

 

Čím musí disponovať tímovo vyvíjaná aplikácia pred cestou do Windows kontajnera.

Kód aplikácie prenesený z projektového úložiska Visual Studio Team Services (VSTS) alebo Team Foundation Server do Windows kontajnera sa ohlási chýbajúcim kompilátorom z Roslynu („...roslyn\csc.exe”). Problém sa skrýva v tom, že projektové šablóny Visual Studia 2015 automaticky používajú Roslyn, ale pri ukladaní kódu do projektového repozitára zdrojového kódu (VSTS alebo TFS) kopírujú „Roslyn“ do iného podadresára. Aby projekt prenesený z VSTS alebo TFS do Windows kontajnera prešiel rekompiláciou úspešne, treba už pri zdroji (teda na vývojárskom počítači) pribaliť Roslyn k projektu na správne miesto. Najjednoduchšie je pridať v Visual Studiu do nastavení projektu „Post build event“ . Keďže v predošlom návode sme vytvorili vzorovú ASP.NET MVC aplikáciu používajúcu najnovší .NET Framework 4.6, stačí v Visual Studiu prejsť vo vlastnostiach projektu do panela „Build Events“, vybrať „Post Build Events Command Line“ a do panela určeného pre vloženie kódu spúštaného po „buildovaní“ vložiť nasledujúce príkazy:

if not exist "$(WebProjectOutputDir)\bin\Roslyn" md "$(WebProjectOutputDir)\bin\Roslyn" start /MIN xcopy /s /y /R "$(OutDir)roslyn\*.*" "$(WebProjectOutputDir)\bin\Roslyn" obrvsts_1

Ďalšou požiadavkou tímového vývoja je projektový softvér, ktorý poskytne nielen repozitár zdrojového kódu, ale aj zadávanie úloh vývojárom, vývoj aplikácie súčasne viacerými vývojármi, testovanie a „buildovanie“ na jednom centrálnom mieste a mnoho ďalšej funkcionality. Konceptu vývoja v tíme s cieľom nasadiť aplikáciu do Windows kontajnera v Azure vyhovuje najlepšie Visual Studio Team Services (VSTS). Vytvorme teda pre náš projekt priestor na jeho správu v VSTS:
1. Prejdite na https://www.visualstudio.com/ a v sekcii „Visual Studio Team Service“ potvrďte „Get Started“.
2. Vytvorte si účet pre projekty.

obrvsts_2
Poznámka: Ak máte aktívne Visual Studio s MSDN, použite pre vytvorenie projektov rovnaký Microsoft Account ( LiveID), aký ste si pridelili k predplatnému Visual Studia. Získate tým viac funkčnosti pri riadení projektu a môžete byť licencovaným členom viac ako 5-členných tímov.
3. Po dokončení vytvorenia VSTS účtu vyberte na projektovom portále v sekcii „Recent Projects & Teams“ linku „New“ .
4. Zadajte názov tímového projektu, vyberte metodológiu vývoja (napr. SCRUM), systém sledovania projektových zmien a úložiska zdrojového kódu. Môže si vybrať adresárovo orientovaný GIT alebo projektovo centralizovaný Team Foundation Version Control (TFVC). (Ako odchovanec Team Foundation Server-a som zvolil TFVC.) Potvrďte „Create Project“.

obrvsts_3
5. Po vytvorení tímového projektu potvrďte „Navigate to project“ .
6. Prepnite sa do Visual Studia, kde máte otvorený projekt webovej aplikácie a spárujte ho s tímovým projektom VSTS. Stačí v paneli Solution Explorer vybrať záložku Team Explorer a potvrdiť ikonu Manage Connections.

obrvsts_4
Rozkliknite kontextové menu linky Manage Connection a vyberte „Connect to team project“. V okne „Connect to Team Foundation Server“ vyberte tlačidlo Servers a tlačidlom Add pridajte názov vášho projektovému účtu na VSTS (vo formáte <nazov>.visualstudio.com).
7. Z VSTS sa načíta zoznam tímových projektov, ktoré máte k dispozícii. Vyberte tímový projekt určený pre vývoj webovej aplikácie a potvrďte tlačidlo "Connect" .

obrvsts_5

8. Prepnite sa do Solution Explorer-a a z kontextového menu celého „solution“ vyberte „Add Solution to Source Control“ . V zobrazenom zozname projektov ponechajte vybraný tímový projekt „web_v_kontajneri“ a potvrďte OK.

obrvsts_6
9. V kontextovom menu celého „solution“ vyberte „Check-in“ pre iniciálne nastavenie zdrojových súborov, ktoré sa pri synchronizácii prenesú do repozitára kódu na VSTS. Otvorí sa Team Explorer v paneli Pending changes, v ktorom pre spustenie synchronizácie potvrďte „Check In“. Počkajte, kým sa synchronizácia neukončí.

obrvsts_7

 

Prepojenie tímového projektu s Windows kontajnerom.

V predošlom odseku sme vytvorili zo „súkromného“ projektu projekt tímový s úložiskom a správou projektu v VSTS. Ak ho chceme po každej zmene doručiť do Windows kontajnera pre „user acceptance“ testy, musíme projekt dokonfigurovať priamo na portále VSTS.
1. Na VSTS portále vyberte v projekte menu „Build&Release“ a vyberom ikony „+“ vyvorte novú definíciu „buildovania“. Zobrazí sa sa asistent na tvorbu „build“definícií. Vyberte v ňom šablónu Visual Studio a potvrďte „Next“. Repozitár by mal byť správne nastavený, postačuje len potvrdiť „Create“.
2. Preddefinované nastavenia „build“ šablóny nám nepostačujú, pretože nemajú aktivované priebežné buildovanie po zmenách kódu vývojármi a nie je napojená na hostiteľa kontajnerov. Vyberte najskôr menu „Trigger“ a zapnite „Continuous Integration“ pre automatické buildovanie hneď po zmenách.

obrvsts_8
3. Uložte zmenu cez „Save“ a zároveň dajte definícii popisnejší názov.
4. Zvoľte v definícii menu „Build“ a cez „Add Build Step“ pridajte nový krok, ktorý zabezpečí prekopírovanie skompilovaného projektu na server hostujúci kontajneri. (Ten, ktorý sme si predpripravili v minulom blogposte.) Z ponuky predpripravených „build“ krokov vyberte subkategóriu „Deploy“ a zo zoznamu krok „Azure File Copy“. Nakoniec pridajte krok na kopírovanie aplikačného „kompilátu“ do build definície tlačidlom „Add“.

obrvsts_9
5. Krok „Azure File Copy“ si následne vyžiada doplnenie potrebných nastavení pre kopírovanie „buildu“ aplikácie „WebvKontajneri1“ :

Source: $(build.artifactstagingdirectory)\_PublishedWebsites\WebvKontajneri1
AzureConnection Type: Azure Resource Manager

Napravo od položky Azure RM Subscription vyberte „Manage“ .
6. VSTS portál vás presmeruje na formulár vytvorenia spojenia tímového projektu s vašou Azure subskripciou. Vyberte „New Service Endpoint“ typu Azure Resource Manager. Zadajte meno pre vytvárane spojenie a potvrďte „OK“. VSTS portál vytvorí vo vašej subskripcii servisný účet, ktorý bude používať na kopírovania artefaktov projektu do Azure zdrojov.
7. Vráťte sa do okna konfigurácie „Azure File Copy“ , potvrďte ikonu „refresh“ napravo od položky Azure RM Subscription. Aktualizujete tým zoznam prepojení na Azure subskripciu. Vyberte zo zoznamu v predošlom kroku vytvorené servisné spojenie na Azure.
8. Doplňte zostávajúce nastavenia kroku „Azure File Copy“:

Destination Type : Azure VMs
RM Storage Account : <napr. účet úložiska, ktorý je v Resource Group hostiteľa kontajnerov>
Resource Group : <názov Resource Group, v ktorej je hostiteľ kontajnerov>
Select Machines by : Machine Names
Filter Criteria : <meno servera, ktorý je hostiteľom kontajnerov>
Admin Login : <mena administrátora pre server, ktorý je hostiteľom kontajnerov >
Password: <heslo administrátora>
Destination folder: <priečinok, kam sa má nakopírovať „build“. Podľa predošlého blogu „c:\aplikacia1”. >

Na formulári ešte aktivujte nastavenie „Enable Copy Prerequisites“ pre konfiguráciu Windows Remote Management na Azure VM. Uložte nastavenia potvrdením „Save“ .

obrvsts_10

9. Na záver je potrebné urobiť poriadok v tom, čo a odkiaľ bude „Azure File Copy“ kopírovať, teda správne naplniť „$(build.artifactstagingdirectory)“ , ktorý považuje kopírovací krok za zdrojový priečinok. Vyberte krok „Build Solution“ a nastavte parameter „MSBuild Arguments“ na hodnotu „/p:DeployOnBuild=true /p:OutDir=$(build.artifactstagingdirectory)\“. Zmenu opäť uložte cez „Save“ .
10. Je ten správny čas na otestovanie nasadenia prvej verzie webovej aplikácie. Stačí potvrdiť „Queue build“ a potvrdiť „OK“.
11. Po alokovaní „build“ agenta sa po chvíli zobrazí výpis akcií a príkazov, ktoré „build“ proces tak, ako sme ho nastavili vykonáva. S úlohou Azure File Copy na záver.

obrvsts_12
12. Ak všetko hladko prebehne, na hostiteľský server kontajnerov, tak ako sme ho vytvorili v predošlom blogposte, sa nakopíruje „build“ webovej aplikácie priamo z VSTS.

obrvsts_13
13. Zavŕšme komfort VSTS v spojení s Visual Studiom pri práci v tímoch. Pridajte do projektu niekoľkých vývojárov. Každý môže editovať a kódovať rôzne časti webovej aplikácie a po každej skupine zmien, ktorú vykonajú, potvrdia Check-in v Team Explorer-e. Automaticky sa  rozbehne proces buildovania ukončený nasadením zmien do kontajnera.

obrvsts_14 obrvsts_15

 

Umiestnenie viacerých Windows kontajnerov na jeden kontajnerizačný server umožňuje nielen jednoduchšie vytvárať, ale aj izolovať a spravovať aplikačné prostredia. Pri použití Visual Studia, Visual Studio Team Services a kontajnerizácie v Azure v aplikačnom vývojovom cykle sa dá komfortne nielen vyvíjať ale aj nasadzovať využitím konceptov priebežnej integrácie a priebežného nasadenia. Čas od vývoja po akceptačné testy sa tým výrazne skracuje.