Spoločnosť Microsoft pracuje na novej globálnej kontrole pre multimédiá vo svojom prehliadači Edge založenom na Chromiu.

Nedávno som sa stretol s málo populárnou, zatiaľ čo príšerou vo svete DevOps, a to s Azure DevOps pipeline. Hneď som pocítil absenciu jasných pokynov alebo článkov na túto tému. Neviem, čím to je, ale Microsoft má určite čo zlepšovať v oblasti popularizácie nástroja. Dnes si vytvoríme pipeline pre automatizované testovanie v rámci Azure cloudu.

Takže, úloha:
Máme softvér, ktorý zostavujeme pomocou Azure DevOps, a je zložený z projektu na WIX. Ak bude záujem, napíšem aj o tomto nástroji. V skutočnosti ide o optimalizovaný spôsob zostavovania Windows installerov, ktorý nahrádza štandardný InstallShield. Takže náš softvér sa úspešne zostavuje a generuje artefakt, akýsi setup.exe, ktorý inštaluje aplikáciu do systému Windows. Je potrebné túto aplikáciu nainštalovať do virtuálky podobnej tej v produkcii, preniesť tam automatizované testy pripravené testovacím tímom, spustiť ich a získať výsledky, aby sme mohli posúdiť vetvu ako dobrú alebo zlú predtým, ako ju skombinujeme. Všetko ako v GitLab, len cez ž....

Ako virtuálna prostredie, v ktorom budeme vykonávať naše testy, použijeme samozrejme Azure DevTest Labs, akúsi entitu v predplatných Azure, ktorá je vytvorená na to, aby v nej bežali rôzne testovacie veci za prijateľné peniaze.

1. Integrácia na strane cloudu

Na začiatok budeme potrebovať integrovať naše DevTest Labs s Azure DevOps, na čo budeme potrebovať akýsi servisný princíp, v podstate servisný účet, ktorý umožňuje našim pipeline prístup do cloudu a vytvárať/mazať tam zdroje pre seba.

Ideme do predplatného a nájdeme službu Azure Active Directory

Spoločnosť Microsoft pracuje na novej globálnej kontrole pre multimédiá vo svojom prehliadači Edge založenom na Chromiu.

Nájdeme Registrácie aplikácií a klikneme na Novú registráciu, to nám vytvorí náš servisný princíp. Podrobne rozoberať, aké nastavenia vybrať pri vytváraní, nebudem, to sa môže líšiť v rôznych predplatných.

Spoločnosť Microsoft pracuje na novej globálnej kontrole pre multimédiá vo svojom prehliadači Edge založenom na Chromiu.

Teraz musíme našemu servisnému riaditeľovi dať práva. Na to ideme do predplatných, ikonka s kľúčom. Vyberáme naše predplatné.

Spoločnosť Microsoft pracuje na novej globálnej kontrole pre multimédiá vo svojom prehliadači Edge založenom na Chromiu.

Potom v Kontrole prístupu klikneme na Priradenie rolí a hľadáme podľa práve vytvoreného mena tento účet. Dáme mu rolu Prispievateľ, to je dostatočné.

Spoločnosť Microsoft pracuje na novej globálnej kontrole pre multimédiá vo svojom prehliadači Edge založenom na Chromiu.

Následne sa vraciame k nášmu Servisnému princípu v Azure AD a otvárame jeho vlastnosti. Neskôr budeme potrebovať všetky ID, ktoré tam sú, a uložíme si ich.

Týmto sa naše nastavenia portálu končia a prechádzame do Azure DevOps.

2. Integrácia v Azure DevOps

Najprv prejdeme do nastavení projektu a vyberieme Service Connections. Vytvoríme nový prvok typu Azure Resource Manager.

Spoločnosť Microsoft pracuje na novej globálnej kontrole pre multimédiá vo svojom prehliadači Edge založenom na Chromiu.

Teraz budeme potrebovať všetky ID, ktoré sme si zapísali. Klikneme na Použiť plnú verziu dialógu pre pripojenie služby. A zadáme všetky údaje, ktoré sme získali od Service Principal. Klikneme na overiť a ak je všetko v poriadku, uložíme pripojenie. Teraz naše pipeline môžu to využiť na pripojenie k cloudu.

Spoločnosť Microsoft pracuje na novej globálnej kontrole pre multimédiá vo svojom prehliadači Edge založenom na Chromiu.

3. Vytvorenie pipeline

Teraz prichádzame k tomu najzaujímavejšiemu, budovaniu samotnej pipeline. Otvoríme menu Pipelines-Builds

Spoločnosť Microsoft pracuje na novej globálnej kontrole pre multimédiá vo svojom prehliadači Edge založenom na Chromiu.

Stretne nás menu na vytvorenie nového buildu, ktoré sa pokúsi automaticky vytvoriť YAML súbor s vhodnou konfiguráciou. Slušne odmietame a vyberáme klasickú variantu. Je to jasné, že Microsoft sa snaží spraviť všetko pre ľudí a poskytnúť možnosť maximálne prispôsobovať pipeline cez YAML, ale nedostatočná dokumentácia a jednoducho praktická nefunkčnosť mnohých modulov nám hovoria, že je zatiaľ skoro na využívanie tejto funkčnosti.

Spoločnosť Microsoft pracuje na novej globálnej kontrole pre multimédiá vo svojom prehliadači Edge založenom na Chromiu.

Z množstva šablón budeme potrebovať jednoduchú prázdnu pipeline. Po jej vytvorení nás privíta prázdne editovacie okno, v ktorom strávime dosť času.

Spoločnosť Microsoft pracuje na novej globálnej kontrole pre multimédiá vo svojom prehliadači Edge založenom na Chromiu.

Aby sme mohli pokračovať, klikneme na + a dostaneme sa do akéhosi obchodu s modulmi, odkiaľ budeme potrebovať podľa zoznamu nasledujúce komponenty.

Spoločnosť Microsoft pracuje na novej globálnej kontrole pre multimédiá vo svojom prehliadači Edge založenom na Chromiu.

Predtým než začneme s konfiguráciou úloh pipeline, musíme vytvoriť a uložiť do projektu niekoľko súborov. Tieto budú ARM Template našej virtuálnej mašiny, ktorý vygenerujeme v Azure DevTest Labs, skript na získanie IP adresy mašiny po jej vytvorení a, ak chceme, skripty našich testov alebo čo chceme na hoste spustiť.

4. Generovanie ARM Template

Aby sme vytvorili virtuálnu mašinu, najprv musíme vygenerovať pre ňu template, json súbor, ktorý uložíme do kódu projektu, aby ho odtiaľ mohla prečítať pipeline.

Ideme do našej laboratória a nájdeme menu Formulas (znovupoužiteľné základy), klikneme na vytvoriť nový.

Spoločnosť Microsoft pracuje na novej globálnej kontrole pre multimédiá vo svojom prehliadači Edge založenom na Chromiu.

Stretne nás dlhý zoznam obrázkov ako základ, výber veľkosti mašiny, to isté ako pri vytváraní virtuálnej mašiny. Na tomto kroku sa nebudeme zastavovať, okamžite prejdeme k poslednému bodu vlastností mašiny, a to artefaktom. Môžete použiť akékoľvek konfigurácie, ktoré sú potrebné pre vaše prostredie. Napríklad ja pridávam mašinu do domény a pridávam na ňu servisný účet ako administrátora, aby mohol pipeline potom vstúpiť na tento stroj pod týmto účtom. To všetko sa môže líšiť, ale na úspešné testovanie kódu potrebujeme jeden artefakt, na ktorom sa podrobnejšie zastavíme. Aby sa na našom stroji nainštalovala najnovšia verzia testovaného softvéru, použijeme artefakt „Stiahnite artefakt Azure Pipelines a spustite skript“. Pamätajte, na začiatku som hovoril, že niekde sa zostavuje build s inštalačným programom aplikácie? Teraz musíme povedať virtuálnemu stroju, presnejšie šablóne, aby šiel a vzal tento artefakt. A nielen vzal, ale aj nainštaloval, na čo vyplníme špeciálne polia s uvedením projektu, názvu buildu a tajného kľúča. Tajný kľúč, ako vo všetkých podobných systémoch, sa generuje v účte, v tomto prípade v Azure DevOps a ukladá sa v Secrets vo vašej laboratórii. Tu je malé upozornenie, v Secrets ho síce uložíme, ale šablóne to nepomôže, spustí sa už od iného používateľa v rámci pipeline, preto ho musíme znovu manuálne zadať do šablóny.

Ďalší artefakt, ktorý musíme určite pridať, je „Konfigurácia WinRM“, ten nám bude potrebný na ďalší prístup na stroj. Je tam len jeden parameter, hostname. Keďže ho vopred nepoznáme, využijeme premennú %COMPUTERNAME%.

Spoločnosť Microsoft pracuje na novej globálnej kontrole pre multimédiá vo svojom prehliadači Edge založenom na Chromiu.

Takže sme pridali všetky potrebné artefakty, prejdeme k tomu, prečo sme tu vôbec prišli. Získame vygenerovanú ARM šablónu na karte Advanced toho istého okna vytvárania vzorca.

Spoločnosť Microsoft pracuje na novej globálnej kontrole pre multimédiá vo svojom prehliadači Edge založenom na Chromiu.

Skopírujeme obsah stránky do súboru VMtemplate.json a uložíme ho do koreňa projektu. Už viac nepotrebujeme cloud, vraciame sa do pipeline.

5. Konfigurácia pipeline

Začneme s tým najdôležitejším a najzaujímavejším, vytvorením virtuálnej mašiny. Kvôli tomu sme robili všetky tieto integrácie a šablóny. V časti Azure RM Subscription vyberáme našu Service connection, ktorú sme nakonfigurovali v kroku 2. Následne by sa mala zobraziť dostupná laboratórna prostredie. Potom vyberáme json, ktorý sme vygenerovali, a definujeme niektoré povinné premenné. Prihlasovacie meno a heslo k zariadeniu môžeme zadať priamo alebo cez premenné, ale nie som si istý, či to funguje, pretože sa mi nikdy nepodarilo prihlásiť do zariadenia s tými údajmi. Hlavné je zadať názov zariadenia, aby bol ideálne vždy jedinečný. Na to používam premennú prostredia buildu.

Spoločnosť Microsoft pracuje na novej globálnej kontrole pre multimédiá vo svojom prehliadači Edge založenom na Chromiu.

Ďalej nastavujeme ešte jeden dôležitý aspekt. Po tom, čo stroj nabehne, musíme nejako poznať jeho parametre, a najlepšie, aby ich poznal pipeline. Na to vytvárame skript, napríklad GetLabVMParams.ps1 a ukladáme ho tam, do projektu. Text skriptu som vzal zo stránky Microsoft, ale trochu som ho upravil pre svoje prostredie, pretože sa odtiaľ bral PublicIP a FQDN stroja. Ani jedno nemám, ale mám PrivateIP, ktorý nie je tak ľahké získať, preto som dopísal časť.

Param( [string] $labVmId)

$labVmComputeId = (Get-AzureRmResource -Id $labVmId).Properties.ComputeId

# Získať názov resource group laboratórnej VM
$labVmRgName = (Get-AzureRmResource -Id $labVmComputeId).ResourceGroupName

# Získať názov laboratórnej VM
$labVmName = (Get-AzureRmResource -Id $labVmId).Name

# Získať verejnú IP adresu laboratórnej VM
# $labVMIpAddress = (Get-AzureRmPublicIpAddress -ResourceGroupName $labVmRgName -Name $labVmName).IpAddress

# Získať FQDN laboratórnej VM
# $labVMFqdn = (Get-AzureRmPublicIpAddress -ResourceGroupName $labVmRgName -Name $labVmName).DnsSettings.Fqdn

# Získať súkromnú IP adresu laboratórnej VM
$VmNetworkdetails= (((Get-AzureRmVM -ResourceGroupName $labVmRgName -Name $labVmName).NetworkProfile).NetworkInterfaces).Id
$nicname = $VmNetworkdetails.substring($VmNetworkdetails.LastIndexOf("/" ) + 1)
$labVMnetwork = (Get-AzureRmNetworkInterface -Name $nicname -ResourceGroupName $labVmRgName) | Select-Object -ExpandProperty IPConfigurations 
$labVMIpAddress = $labVMnetwork.PrivateIpAddress

# Nastaviť premennú labVmRgName na uloženie názvu resource group laboratórnej VM
Write-Host "##vso[task.setvariable variable=labVmRgName;]$labVmRgName"

# Nastaviť premennú labVMIpAddress na uloženie IP adresy laboratórnej VM
Write-Host "##vso[task.setvariable variable=labVMIpAddress;]$labVMIpAddress"

# Nastaviť premennú labVMFqdn na uloženie názvu FQDN laboratórnej VM
Write-Host "##vso[task.setvariable variable=labVMFqdn;]$labVMFqdn"

Write-Output $labVMIpAddress

Set-Item wsman:localhostclienttrustedhosts * -Force

Z celého výstupu skriptu potrebujeme iba premennú labVMIpAddress. Možno budete potrebovať aj niečo iné, takže som nič neodstraňoval, iba som zakomentoval zbytočné časti.

Taktiež vysvetlím posledný riadok skriptu, ten povoľuje našej build mašine prístup k akémukoľvek hostiteľovi cez WinRM.

Naším dalším krokem je spuštění našeho skvělého skriptu. Bude potřebovat to stejné připojení k cloudu a vstupní proměnnou s ID stroje, které bude již známo z předchozího kroku. Jak? Je třeba zmínit skvělou věc, jako jsou výstupní proměnné. Každý krok může mít seznam proměnných, které se posílají dál, k dalším krokům pipeline. Pro náš super skript bude takovou proměnnou labVMIpAddress, nezapomeňte to uvést.

Spoločnosť Microsoft pracuje na novej globálnej kontrole pre multimédiá vo svojom prehliadači Edge založenom na Chromiu.

Dále provádím poměrně jednoduché úkony, které se mohou lišit případ od případu. Spouštím vzdálený skript pro vytvoření sdílení, do kterého následně nahraji své skripty.

New-Item "C:test" –type directory
New-SMBShare –Name "test" –Path "C:test"  –FullAccess everyone

Z názvu úloh je jasné, že dále kopírujeme určité ukázkové skripty na stroj a ještě jedním krokem je vykonáváme. Jako adresu vzdáleného stroje využijeme naši proměnnou $(labVMIpAddress). Dále použijeme úlohu „stáhnout artefakt ze sdílení“ a zkopírujeme výsledky provedení skriptu do našeho build prostředí, poté tímto stejným standardním úkolem uložíme tyto soubory do artefaktu buildu. Poté, co stroj již nepotřebujeme, posledním krokem je jeho vypnutí. Hlavní obtíž, jak je vidět z objemu článku, je integrovat se s cloudem a navázat kontakt s virtuálkou, kterou jste vytvořili, poté už si můžete hrát, jak dlouho potřebujete.

Toto je můj první článek, takže to prosím nehodnoťte příliš přísně, připomínky jsou vítány.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster