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"
Ď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.
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“.
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.
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" .
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.
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čí.
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.
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“.
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“ .
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.
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.
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.
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.