Π‘Ρ‚Ρ€ΠΎΠΈΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования Π½Π° Azure DevOps

НСдавно я столкнулся с Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ популярным ΠΏΠΎΠΊΠ° Π·Π²Π΅Ρ€Π΅ΠΌ Π² ΠΌΠΈΡ€Π΅ DevOps, ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°ΠΌΠΈ Azure DevOps. Π‘Ρ€Π°Π·Ρƒ ΠΆΠ΅ ΠΎΡ‰ΡƒΡ‚ΠΈΠ» отсутствиС ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΎ внятных инструкций ΠΈΠ»ΠΈ статСй Π½Π° Ρ‚Π΅ΠΌΡƒ, Π½Π΅ знаю с Ρ‡Π΅ΠΌ это связанно, Π½ΠΎ Microsoft явно Π΅ΡΡ‚ΡŒ Π½Π°Π΄ Ρ‡Π΅ΠΌ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΏΠ»Π°Π½Π΅ популяризации инструмСнта. БСгодня ΠΌΡ‹ построим ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±Π»Π°ΠΊΠ° Azure.

Π˜Ρ‚Π°ΠΊ, Π·Π°Π΄Π°Ρ‡Π°:
Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ софт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ билдят ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Azure DevOps, ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ ΠΈΠ· ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° WIX. Если Π±ΡƒΠ΄Π΅Ρ‚ интСрСс, Π½Π°ΠΏΠΈΡˆΡƒ ΠΈ ΠΎΠ± этом инструмСнтС. По Ρ„Π°ΠΊΡ‚Ρƒ это Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ способ сборки Π²ΠΈΠ½Π΄ΠΎΠ²Ρ‹Ρ… установщиков, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΉ собой стандартный InstallShield. Π˜Ρ‚Π°ΠΊ, наш софт ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ собираСтся ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚, Π½Π΅ΠΊΠΈΠΉ setup.exe, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ставит ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² систСму Windows. НСобходимо это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ Π½Π° ΠΏΡ€ΠΎΠ΄ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΡƒ, ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΡƒΠ΄Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ тСсты, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ тСстирования, Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈΡ… ΠΈ Π·Π°Π±Ρ€Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΈΠ»ΠΈ ΠΏΠ»ΠΎΡ…ΠΎΠΉ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΠ΅Ρ€Π΄ΠΆΠΈΡ‚ΡŒ. ВсС ΠΊΠ°ΠΊ Π² GitLab, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΆ….

Π’ качСствС срСды Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π³Π΄Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ наши тСсты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Azure DevTest Labs, Π½Π΅ΠΊΡƒΡŽ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ Π² подписках Azure, которая для Ρ‚ΠΎΠ³ΠΎ ΠΈ создана, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ Π² Π½Π΅ΠΉ Π²ΡΡΠΊΡƒΡŽ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π΅Ρ€ΡƒΠ½Π΄Ρƒ Π·Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ»ΠΈΠΌΡ‹Π΅ дСньги.

1. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Π½Π° сторонС ΠΎΠ±Π»Π°ΠΊΠ°

Для Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ потрСбуСтся ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ наш DevTest Labs с Azure DevOps, для Ρ‡Π΅Π³ΠΎ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π΅ΠΊΠΈΠΉ Service Principal, ΠΏΠΎ сути сСрвисная учСтная запись, которая позволяСт Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°ΠΌ Π² ΠΎΠ±Π»Π°ΠΊΠΎ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ/ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΌ рСсурсы для сСбя.

ИдСм Π² подписку ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ сСрвис Azure Active Directory

Π‘Ρ‚Ρ€ΠΎΠΈΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования Π½Π° Azure DevOps

Находим App Registrations ΠΈ ΠΊΠ»ΠΈΠΊΠ°Π΅ΠΌ Π½Π° New Registration, это Π½Π°ΠΌ создаст нашСго service principal. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ настройки Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ создании Π½Π΅ Π±ΡƒΠ΄Ρƒ, это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Ρƒ Ρ€Π°Π·Π½Ρ‹Ρ… подписок.

Π‘Ρ‚Ρ€ΠΎΠΈΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования Π½Π° Azure DevOps

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²Π° Π½Π°ΡˆΠ΅ΠΌΡƒ сСрвисному Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€Ρƒ. Для этого ΠΈΠ΄Π΅ΠΌ Π² подписки, Π·Π½Π°Ρ‡ΠΎΠΊ с ΠΊΠ»ΡŽΡ‡ΠΈΠΊΠΎΠΌ. Π’Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π½Π°ΡˆΡƒ подписку.

Π‘Ρ‚Ρ€ΠΎΠΈΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования Π½Π° Azure DevOps

Π”Π°Π»Π΅Π΅ Π² Access Control ΠΆΠΌΠ΅ΠΌ Role Assignment ΠΈ ΠΈΡ‰Π΅ΠΌ Π² поискС ΠΏΠΎ созданному Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½ΠΈ эту ΡƒΡ‡Π΅Ρ‚ΠΊΡƒ. Π”Π°Π΅ΠΌ Ρ€ΠΎΠ»ΡŒ Contributor, этого достаточно.

Π‘Ρ‚Ρ€ΠΎΠΈΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования Π½Π° Azure DevOps

Π”Π°Π»Π΅Π΅ возвращаСмся ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ Service Principal Π² Azure AD ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ свойства. ПозТС, Π½Π°ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ Π½ΡƒΠΆΠ½Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ всС ID ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ, сохраняСм ΠΈΡ….

На этом наши настройки ΠΏΠΎΡ€Ρ‚Π°Π»Π° Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² Azure DevOps.

2. Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Π½Π° сторонС Azure DevOps

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΌΡ‹ Π·Π°ΠΉΠ΄Π΅ΠΌ Π² настройки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Service Connections. Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт Ρ‚ΠΈΠΏΠ° Azure Resource Manager.

Π‘Ρ‚Ρ€ΠΎΠΈΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования Π½Π° Azure DevOps

БСйчас Π½Π°ΠΌ понадобятся всС ID Ρ‡Ρ‚ΠΎ ΠΌΡ‹ записали. КликаСм Π½Π° use the full version of the service connection dialog. И Π²Π²ΠΎΠ΄ΠΈΠΌ всС Π΄Π°Π½Π½Ρ‹Π΅ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΠΎΡ‚ Service Principal. Π–ΠΌΠ΅ΠΌ verify ΠΈ Ссли всС ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ сохраняСм соСдинСниС. Π’Π΅ΠΏΠ΅Ρ€ΡŒ наши ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ ΠΎΠ±Π»Π°ΠΊΡƒ.

Π‘Ρ‚Ρ€ΠΎΠΈΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования Π½Π° Azure DevOps

3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°

Π’Π΅ΠΏΠ΅Ρ€ΡŒ приступаСм ΠΊ самому интСрСсному, ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΡŽ нСпосрСдствСнно ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ мСню Pipelines-Builds

Π‘Ρ‚Ρ€ΠΎΠΈΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования Π½Π° Azure DevOps

Нас встрСчаСт мСню создания Π½ΠΎΠ²ΠΎΠ³ΠΎ Π±ΠΈΠ»Π΄Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ попытаСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π°ΠΌ YAML Ρ„Π°ΠΉΠ» подходящСй ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. ΠœΡ‹ Π²Π΅ΠΆΠ»ΠΈΠ²ΠΎ отказываСмся ΠΎΡ‚ этого ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ классичСский Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Microsoft ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ всС ΠΊΠ°ΠΊ Ρƒ людСй ΠΈ Π΄Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ максимально ΠΊΠ°ΡΡ‚ΠΎΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρ‹ Ρ‡Π΅Ρ€Π΅Π· YAML, Π½ΠΎ скупая докумСнтация ΠΈ просто практичСская Π½Π΅Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π½Π°ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ° Ρ€Π°Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ.

Π‘Ρ‚Ρ€ΠΎΠΈΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования Π½Π° Azure DevOps

Из многообразия шаблонов Π½Π°ΠΌ потрСбуСтся простой Empty Pipeline. ПослС Π΅Π³ΠΎ создания нас встрСчаСт пустоС окошко рСдактирования, Π² Π½Π΅ΠΌ ΠΌΡ‹ дальшС ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ довольно ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π‘Ρ‚Ρ€ΠΎΠΈΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования Π½Π° Azure DevOps

Π˜Ρ‚Π°ΠΊ, Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π° + ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π΅ΠΌ Π² Π½Π΅ΠΊΠΈΠΉ ΠΌΠ°Π³Π°Π·ΠΈΠ½ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΎΡ‚ΠΊΡƒΠ΄Π° Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ списку ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹.

Π‘Ρ‚Ρ€ΠΎΠΈΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования Π½Π° Azure DevOps

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ приступим ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ тасков ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ². Π­Ρ‚ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ARM Template нашСй Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ сгСнСрируСм Π² Azure DevTest Labs, скрипт доставания IP ΠΌΠ°ΡˆΠΈΠ½Ρ‹ послС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ½Π° создана Π½Ρƒ ΠΈ, ΠΏΠΎ ТСланию, скрипты Π½Π°ΡˆΠΈΡ… тСстов ΠΈΠ»ΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π° хостС Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ.

4. ГСнСрация ARM Template

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΡƒ, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡƒΠ΄Π΅Ρ‚ для Π½Π°Ρ‡Π°Π»Π° ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ для Π½Π΅Π΅ Ρ‚Π΅ΠΌΠΏΠ»Π΅ΠΉΡ‚, json Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Π² ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° смог ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½.

ИдСм Π² Π½Π°ΡˆΡƒ Π»Π°Π±Ρƒ ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ мСню Formulas (reusable bases), ΠΆΠΌΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ.

Π‘Ρ‚Ρ€ΠΎΠΈΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования Π½Π° Azure DevOps

Нас встрСтит Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ список ΠΈΠΌΠ°Π΄ΠΆΠ΅ΠΉ Π² качСствС Π±Π°Π·Ρ‹, Π²Ρ‹Π±ΠΎΡ€ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΌΠ°ΡˆΠΈΠ½Ρ‹, всС Ρ‚ΠΎ ΠΆΠ΅ самоС ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈ создании Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠΈ. На этом этапС ΠΌΡ‹ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ, сразу ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ послСднСму ΠΏΡƒΠ½ΠΊΡ‚Ρƒ свойств ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Π°ΠΌ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для вашСй срСды. НапримСр, я добавляю ΠΌΠ°ΡˆΠΈΠ½Ρƒ Π² Π΄ΠΎΠΌΠ΅Π½ ΠΈ добавляю Π½Π° Π½Π΅Π΅ сСрвисный Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ Π² качСствС Π°Π΄ΠΌΠΈΠ½Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ ΠΏΠΎΡ‚ΠΎΠΌ ΠΌΠΎΠ³ Π½Π° эту ΠΌΠ°ΡˆΠΈΠ½Ρƒ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ этой ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записью. Π­Ρ‚ΠΎ всС ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π½ΠΎ для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ тСстирования ΠΊΠΎΠ΄Π° Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ остановимся ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π° Π½Π°ΡˆΡƒ ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΏΠΎΡΡ‚Π°Π²ΠΈΠ»Π°ΡΡŒ послСдняя вСрсия тСстируСмого Π½Π°ΠΌΠΈ софта, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ Β«Download Azure Pipelines Artifact and Run ScriptΒ». ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ Π² Π½Π°Ρ‡Π°Π»Π΅ я Π³ΠΎΠ²ΠΎΡ€ΠΈΠ» Ρ‡Ρ‚ΠΎ Π³Π΄Π΅-Ρ‚ΠΎ собираСтся Π±ΠΈΠ»Π΄ с установщиком прилоТСния? Π’ΠΎΡ‚ сСйчас Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠ΅, Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅ Ρ‚Π΅ΠΌΠΏΠ»Π΅ΠΉΡ‚Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ пошСл ΠΈ Π·Π°Π±Ρ€Π°Π» этот Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚. И Π½Π΅ просто Π·Π°Π±Ρ€Π°Π», Π° Π΅Ρ‰Π΅ установил, для Ρ‡Π΅Π³ΠΎ заполняСм ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ поля с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, названия Π±ΠΈΠ»Π΄Π° ΠΈ сСкрСтного ΠΊΠ»ΡŽΡ‡Π°. Π‘Π΅ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡, ΠΊΠ°ΠΊ ΠΈ Π²ΠΎ всСх систСмах ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π°, гСнСрируСтся Π² ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π² Azure DevOps ΠΈ сохраняСтся Π² Secrets Π² вашСй Π»Π°Π±Π΅. Π’ΡƒΡ‚ Π΅ΡΡ‚ΡŒ малСнькая ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ°, Π² Secrets Ρ‚ΠΎ ΠΌΡ‹ Π΅Π³ΠΎ сохраним, Π½ΠΎ Ρ‚Π΅ΠΌΠΏΠ»Π΅ΠΉΡ‚Ρƒ ΠΎΡ‚ этого Π½ΠΈ Ρ…ΠΎΠ»ΠΎΠ΄Π½ΠΎ Π½ΠΈ ΠΆΠ°Ρ€ΠΊΠΎ, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΡƒΠΆΠ΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°, ΠΏΠΎ этому сСкрСтный ΠΊΠ»ΡŽΡ‡ Π½Π°ΠΌ Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΅Ρ‰Π΅ Ρ€Π°Π· Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ внСсти Π² Ρ‚Π΅ΠΌΠΏΠ»Π΅ΠΉΡ‚.

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, это Β«Configure WinRMΒ», Π½Π°ΠΌ ΠΎΠ½ понадобится для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ доступа Π½Π° ΠΌΠ°ΡˆΠΈΠ½Ρƒ. Π’Π°ΠΌ всСго ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, hostname. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ Π΅Π³ΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ Π½Π΅ Π·Π½Π°Π΅ΠΌ, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ %COMPUTERNAME%.

Π‘Ρ‚Ρ€ΠΎΠΈΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования Π½Π° Azure DevOps

Π˜Ρ‚Π°ΠΊ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ всС Π½ΡƒΠΆΠ½Ρ‹Π΅ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Ρ‚ΠΎΠΌΡƒ Π·Π°Ρ‡Π΅ΠΌ ΠΌΡ‹ сюда Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΈ. ДостаСм сгСнСрированный ARM Template Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Advanced Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΠΊΠ½Π° создания Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹.

Π‘Ρ‚Ρ€ΠΎΠΈΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования Π½Π° Azure DevOps

ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ содСрТимоС страницы Π² Ρ„Π°ΠΉΠ» VMtemplate.json ΠΈ ΠΊΠ»Π°Π΄Π΅ΠΌ Π΅Π³ΠΎ Π² ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π‘ΠΎΠ»ΡŒΡˆΠ΅ Π½Π°ΠΌ ΠΎΠ±Π»Π°ΠΊΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, возвращаСмся Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½.

5. ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°

НачнСм с самого Π²Π°ΠΆΠ½ΠΎΠ³ΠΎ ΠΈ инСтСрсного, создания Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠΈ, Ρ€Π°Π΄ΠΈ этого ΠΌΡ‹ ΠΈ Π΄Π΅Π»Π°Π»ΠΈ всС эти ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Ρ‚Π΅ΠΌΠΏΠ»Π΅ΠΉΡ‚Ρ‹. Π’ ΠΏΡƒΠ½ΠΊΡ‚Π΅ Azure RM Subscription ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ наш Service connection, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ сконфигурировали Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ 2. Π”Π°Π»Π΅Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΡΠΊΠΎΡ‡ΠΈΡ‚ΡŒ доступная Π½Π°ΠΌ лабороторная срСда. ΠŸΠΎΡ‚ΠΎΠΌ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ json ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ сгСнСрировали ΠΈ опрСдСляСм Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π›ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΎΡ‚ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π½Π° ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, Π½ΠΎ я Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±Ρ‹ я Ρ‚ΡƒΠ΄Π° Π½Π΅ писал, Π·Π°ΠΉΡ‚ΠΈ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎΠ΄ этими ΠΊΡ€Π΅Π΄Π°ΠΌΠΈ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΎΡΡŒ, Π³Π»Π°Π²Π½ΠΎΠ΅ Π·Π°Π΄Π°Ρ‚ΡŒ имя ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΎ ΠΏΠΎ возмоТности Π±Ρ‹Π»ΠΎ всСгда ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ. Для этого я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ срСды Π±ΠΈΠ»Π΄Π°.

Π‘Ρ‚Ρ€ΠΎΠΈΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования Π½Π° Azure DevOps

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ настраиваСм Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π½Π΅ΠΌΠ°Π»ΠΎΠ²Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ машина Π²Π·Π»Π΅Ρ‚ΠΈΡ‚, Π½Π°ΠΌ ΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ°ΠΊ Ρ‚ΠΎ Π·Π½Π°Ρ‚ΡŒ Π΅Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π° Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅ Π½Π°ΠΌ Π° ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Ρƒ. Для этого ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ скрипт, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ GetLabVMParams.ps1 ΠΈ ΠΊΠ»Π°Π΄Π΅ΠΌ Π΅Π³ΠΎ Ρ‚ΡƒΠ΄Π° ΠΆΠ΅, Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. ВСкст скрипта я взял Π½Π° сайтС Microsoft, Π½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΏΡ€Π°Π²ΠΈΠ» Π΅Π³ΠΎ для своСй срСды, Ρ‚.ΠΊ. ΠΎΠ½ Π±Ρ€Π°Π» PublicIP ΠΈ FQDN ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Ни Ρ‚ΠΎΠ³ΠΎ Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρƒ мСня Π½Π΅Ρ‚, Π½ΠΎ Π΅ΡΡ‚ΡŒ PrivateIP ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Ρ‚Π°ΠΊ Ρ‚ΠΎ просто Π΄ΠΎΡΡ‚Π°Ρ‚ΡŒ, ΠΏΠΎ этому я дописал кусок.

Param( [string] $labVmId)

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

# Get lab VM resource group name
$labVmRgName = (Get-AzureRmResource -Id $labVmComputeId).ResourceGroupName

# Get the lab VM Name
$labVmName = (Get-AzureRmResource -Id $labVmId).Name

# Get lab VM public IP address
# $labVMIpAddress = (Get-AzureRmPublicIpAddress -ResourceGroupName $labVmRgName -Name $labVmName).IpAddress

# Get lab VM FQDN
# $labVMFqdn = (Get-AzureRmPublicIpAddress -ResourceGroupName $labVmRgName -Name $labVmName).DnsSettings.Fqdn

# Get lab VM private IP address
$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

# Set a variable labVmRgName to store the lab VM resource group name
Write-Host "##vso[task.setvariable variable=labVmRgName;]$labVmRgName"

# Set a variable labVMIpAddress to store the lab VM Ip address
Write-Host "##vso[task.setvariable variable=labVMIpAddress;]$labVMIpAddress"

# Set a variable labVMFqdn to store the lab VM FQDN name
Write-Host "##vso[task.setvariable variable=labVMFqdn;]$labVMFqdn"

Write-Output $labVMIpAddress

Set-Item wsman:localhostclienttrustedhosts * -Force

Из всСго, Ρ‡Ρ‚ΠΎ считываСт скрипт, Π½Π°ΠΌ Π½ΡƒΠΆΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пСрСмСнная labVMIpAddress. Ну это ΠΌΠ½Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π΅Ρ‰Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ понадобится, ΠΏΠΎ этому я Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ удалял ΠΈ просто Π·Π°ΠΊΠΎΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π» лишнСС.

Π’Π°ΠΊ ΠΆΠ΅ объясню послСднюю строчку скрипта, ΠΎΠ½Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ нашСй Π±ΠΈΠ»Π΄ машинС доступ Π΄ΠΎ любого хоста ΠΏΠΎ WinRM.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ этапом ΠΌΡ‹ запускаСм наш Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ скрипт. Π•ΠΌΡƒ потрСбуСтся Ρ‚ΠΎ ΠΆΠ΅ самоС соСдинСниС с ΠΎΠ±Π»Π°ΠΊΠΎΠΌ, входная пСрСмСнная с ID ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ ΡƒΠΆΠ΅ извСстно ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ шага. Как? Π’ΡƒΡ‚ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ Output Variables. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ шага ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ список ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ дальшС, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагам ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°. БоотвСтствСнно для нашСго супСр скрипта Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ labVMIpAddress, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ это ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ.

Π‘Ρ‚Ρ€ΠΎΠΈΠΌ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования Π½Π° Azure DevOps

Π”Π°Π»Π΅Π΅ я дСлаю довольно простыС Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, ΠΌΠΎΠ³ΡƒΡ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ кСйса ΠΊ кСйсу. Исполняю ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ скрипт с созданиСм ΡˆΠ°Ρ€Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΡ‚ΠΎΠΌ Π±ΡƒΠ΄Ρƒ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ свои скрипты.

New-Item β€œC:test" –type directory
New-SMBShare –Name β€œtest” –Path β€œC:test”  –FullAccess everyone

Из названия тасок понятно, Ρ‡Ρ‚ΠΎ дальшС ΠΌΡ‹ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ sample script Π½Π° ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΈ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ этапом Π΅Π³ΠΎ исполняСм. Π’ качСствС адрСса ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π½Π°ΠΌ пригодится наша пСрСмСнная $(labVMIpAddress). Π”Π°Π»Π΅Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ таску Β«Π·Π°Π±Ρ€Π°Ρ‚ΡŒ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ с ΡˆΠ°Ρ€Ρ‹Β» ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ исполнСния скрипта сСбС Π² Π±ΠΈΠ»Π΄ срСду, ΠΏΠΎΡ‚ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ стандартной таской сохраняСм эти Ρ„Π°ΠΉΠ»Ρ‹ Π² Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ Π±ΠΈΠ»Π΄Π°. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ машина Π½Π°ΠΌ большС Π½Π΅ Π½ΡƒΠΆΠ½Π°, послСдним этапом Π΅Ρ‘ ΡƒΠ±ΠΈΠ²Π°Π΅ΠΌ. Главная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΌΡƒ ΡΡ‚Π°Ρ‚ΡŒΠΈ, это ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с ΠΎΠ±Π»Π°ΠΊΠΎΠΌ ΠΈ Π½Π°Π»Π°Π΄ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ создали, дальшС ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ сколько Π½ΡƒΠΆΠ½ΠΎ.

Π­Ρ‚ΠΎ моя пСрвая ΡΡ‚Π°Ρ‚ΡŒΡ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π΅ судитС строго, замСчания ΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com