ИспользованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°Ρ… Azure DevOps

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΠΎΠ±Π·ΠΎΡ€ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΡƒΠ»Ρ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ΄ Windows ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Azure DevOps. На этот Ρ€Π°Π·, Π½Π°ΠΌΡƒΡ‡Π°Π²ΡˆΠΈΡΡŒ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ окруТСния, я Ρ€Π΅ΡˆΠΈΠ» вынСсти вСсь ΠΎΠΏΡ‹Ρ‚ Π² ΠΎΠ΄Π½Ρƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ.

Начиная ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ срСды исполнСния Ρƒ Π½ΠΈΡ… Ρ€Π°Π·Π½Ρ‹ΠΉ синтаксис, оканчивая отсутствиСм стандартной возмоТности пСрСноса ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ стадии ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ.

ΠžΠ³ΠΎΠ²ΠΎΡ€ΡŽΡΡŒ, Ρ‡Ρ‚ΠΎ основныС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π° Release Pipelines, ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ YAML Ρ‚ΡƒΠ΄Π° Π΅Ρ‰Π΅ Π½Π΅ Π΄ΠΎΠ΅Ρ…Π°Π», Π° ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ мноТСства этапов ΠΈ мноТСства Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΎ, Π²Ρ€ΠΎΠ΄Π΅, стало доступно Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Pipelines, Ρ‡Ρ‚ΠΎ практичСски уровняло ΠΈΡ… ΠΏΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ Pipelines YAML Π΄ΠΎΠΏΠΈΠ»ΠΈΠ»ΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΊ тСкстовому ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ, Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ подсказку с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ. ΠžΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Π½Π΅ Π½Π°Π΄ΠΎ Π»Π΅Π·Ρ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ. Но это Π±ΡƒΠ΄Ρƒ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅, Π° ΠΏΠΎΠΊΠ° Π²ΠΎΡ‚ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° самого нововвСдСния.

ИспользованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°Ρ… Azure DevOps

Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ использованиС

НачнСм с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² систСмС Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Они Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ, Π² зависимости ΠΎΡ‚ происхоТдСния, со слов Release, System, etc. ΠŸΠΎΠ»Π½Ρ‹ΠΉ список (ΠΊΠ°ΠΊ оказалось, Π½Π΅Ρ‚), доступСн Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Π’ΡΡŽ ΡˆΠΈΠ·ΠΎΡ„Ρ€Π΅Π½ΠΈΡŽ с синтаксисом ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½ΠΈΠΆΠ΅. Π£ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ прСдставлСния, Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π³Π΄Π΅ ΠΌΡ‹ Π΅Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ.

steps:
 - bash: echo This script could use $SYSTEM_ACCESSTOKEN
    env:
      SYSTEM_ACCESSTOKEN: $(System.AccessToken)
  - powershell: Write-Host "This is a script that could use $env:SYSTEM_ACCESSTOKEN"
    env:
      SYSTEM_ACCESSTOKEN: $(System.AccessToken)

Если Π²Ρ‹ Π·Π°Π΄Π°Π΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π½Π° Π°Π³Π΅Π½Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ исполняСтся таск, это $(System.AccessToken). Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ powershell скрипта Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ Π°Π³Π΅Π½Ρ‚Π΅, это ΡƒΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ $env:SYSTEM_ACCESSTOKEN. Если Π²Ρ‹, упаси Π±ΠΎΠ³, Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ Ρ‚ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΌ хостС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ таск PowerShell on target machines, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ это Ρ‡Π΅Ρ€Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΊ скрипту, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ param. Π‘ bash ΠΏΠΎΠΏΡ€ΠΎΡ‰Π΅, ΠΌΠΎΠΆΠ½ΠΎ просто ΠΏΡ€ΠΎΠΊΠΈΠ΄Ρ‹Π²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΈ синтаксис $SYSTEM_ACCESSTOKEN.

Π’Π΅ ΠΆΠ΅ Π·Π°ΠΊΠΎΠ½Ρ‹ Π½Π΅ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€ΠΎΠ½ΡΡŽΡ‚ΡΡ Π½Π° ваши собствСнныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ‚ΡƒΡ‚ ΡƒΠΆΠ΅ Π²Ρ‹ нСсСтС ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° синтаксис. Π—Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ локально Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅.

ИспользованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°Ρ… Azure DevOps

Или глобально Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π»ΠΈΠ½ΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΈΠ· Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°. ΠžΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

ИспользованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°Ρ… Azure DevOps

Бонусом ΠΊ этому, Ссли ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ шибко сСкрСтныС, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΎΠ±Π»Π°ΠΊΠ΅ Azure Π² Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Azure Vault, Π·Π°Π»ΠΈΠ½ΠΊΠΎΠ²Π°Ρ‚ΡŒ Vault ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Π² Library.

ИспользованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°Ρ… Azure DevOps

Π’ Ρ†Π΅Π»ΠΎΠΌ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ всС понятно, Π² pipelines ΠΈΡ… Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π² Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ запуск, Π² release Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π΅Ρ‚. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ ΠΌΠΎΠΆΠ½ΠΎ Π΅Ρ‰Π΅ Ρ€Π°Π· Π² Π»ΠΎΠ³Π°Ρ… ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π³Π΅Π½Ρ‚Π°, Π½ΠΎ ΡƒΡ‡Ρ‚ΠΈΡ‚Π΅, ΠΎΠ½ΠΈ Ρ‚Π°ΠΌ ΡƒΠΆΠ΅ Π² ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅.

ИспользованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°Ρ… Azure DevOps

ДинамичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

Π‘Π°ΠΌΠΎΠ΅ интСрСсноС начинаСтся, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ этапС ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ.

ИспользованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°Ρ… Azure DevOps

Π’Π°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π°ΠΌ Π½Π΅ Π·Π°Π²Π΅Π·Π»ΠΈ. Но наши Ρ€ΡƒΠΊΠΈ Π½Π΅ для скуки ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π³ΡƒΠ³Π»Π° Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Π‘Π»Π°Π²Π° Π±ΠΎΠ³Ρƒ, Ρƒ Azure DevOps Π΅ΡΡ‚ΡŒ API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΌ позволяСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡ΡƒΡ‚ΡŒ большС, Ρ‡Π΅ΠΌ нарисовали Π² интСрфСйсС.

Π˜Ρ‚Π°ΠΊ, Π½Π°ΠΌ понадобится Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎ обновлСнию Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ прямо ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°. АдрСс бСрСтся ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния, Ρ‚Π΅Ρ… самых ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π½ΠΈ слова Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡ… ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΡƒΠΆ Ρ‚Π°ΠΌ, Π·Π°Ρ…Π°Ρ€Π΄ΠΊΠΎΠ΄ΠΈΡ‚ΡŒ, Ссли Π»Π°Π²ΠΎΡ‡ΠΊΡƒ ΠΏΡ€ΠΈΠΊΡ€ΠΎΡŽΡ‚.

$releaseurl = ('{0}{1}/_apis/release/releases/{2}?api-version=5.0' -f $($env:SYSTEM_TEAMFOUNDATIONSERVERURI), $($env:SYSTEM_TEAMPROJECTID), $($env:RELEASE_RELEASEID)  )

Π—Π°Π΄Π°Π΅ΠΌ пустоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ, ставим Scope β€” Release

ИспользованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°Ρ… Azure DevOps

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π΄Π΅Π»Π°Π΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π½Π΄ΠΎΠΌΠ½Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° синтаксис объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ этого этапа, Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Π·Π°Π²Π΅Π·Π»ΠΈ.

ИспользованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°Ρ… Azure DevOps

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ этапС ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ скрипту, Π΄Π° Π΄Π°, Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ нСльзя, Π½Π°Π΄ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚.

ИспользованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°Ρ… Azure DevOps

Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΏΠΎΠ΄ спойлСром

PowerShell

#Script requires stageVar variable in release variables set to Release scope

param ( [string] $expVar )
#region variables
$ReleaseVariableName = 'StageVar'
$releaseurl = ('{0}{1}/_apis/release/releases/{2}?api-version=5.0' -f $($env:SYSTEM_TEAMFOUNDATIONSERVERURI), $($env:SYSTEM_TEAMPROJECTID), $($env:RELEASE_RELEASEID)  )
#endregion


#region Get Release Definition
Write-Host "URL: $releaseurl"
$Release = Invoke-RestMethod -Uri $releaseurl -Headers @{
    Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
#endregion

#region Output current Release Pipeline
Write-Output ('Release Pipeline variables output: {0}' -f $($Release.variables | ConvertTo-Json -Depth 10))
#endregion


#region Update StageVar with new value
$release.variables.($ReleaseVariableName).value = "$expVar"
#endregion

#region update release pipeline
Write-Output ('Updating Release Definition')
$json = @($release) | ConvertTo-Json -Depth 99
Invoke-RestMethod -Uri $releaseurl -Method Put -Body $json -ContentType "application/json" -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }
#endregion

#region Get updated Release Definition
Write-Output ('Get updated Release Definition')
Write-Host "URL: $releaseurl"
$Release = Invoke-RestMethod -Uri $releaseurl -Headers @{
    Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
}
#endregion

#region Output Updated Release Pipeline
Write-Output ('Updated Release Pipeline variables output: {0}' -f $($Release.variables | ConvertTo-Json -Depth 10))
#endregion

Или

Bash

INPUT_VAR=$1
RELEASE_VAR=$2

echo Test ID: ${INPUT_VAR}

RELEASE_URL="${SYSTEM_TEAMFOUNDATIONSERVERURI}${SYSTEM_TEAMPROJECTID}/_apis/release/releases/${RELEASE_RELEASEID}?api-version=5.0"

echo release url: $RELEASE_URL

RELEASE_JSON=$(curl -H "Authorization: Bearer $SYSTEM_ACCESSTOKEN" $RELEASE_URL)

OUTPUT=`jq ''.variables.${RELEASE_VAR}.value' = '"${INPUT_VAR}"'' <<< $RELEASE_JSON`

curl -H "Authorization: Bearer $SYSTEM_ACCESSTOKEN" -H "Content-Type: application/json" -X PUT -d "$OUTPUT" $RELEASE_URL

Π’ Π΄Π²ΡƒΡ… словах, наш скрипт Π±Π΅Ρ€Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ myVar ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ API ΠΊΠ»Π°Π΄Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² stageVar. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ этапС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ синтаксис систСмных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ.

ИспользованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°Ρ… Azure DevOps

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ довольно простой, Π½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Π½Π°ΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ возмоТности, Π² суммС с ΠΌΠΎΠ΅ΠΉ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС тСстирования, ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ с Π½Π΅ΠΉ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ манипуляции дальшС, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ нСсколько. И Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ этапом Π΅Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ. БСйчас Ρƒ нас Π³ΠΎΠ½ΡΡŽΡ‚ΡΡ автотСсты ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π½Π° свСТих Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠ°Ρ…. Учитывая, Ρ‡Ρ‚ΠΎ ΠΆΠΈΠ²ΡƒΡ‚ ΠΎΠ½ΠΈ ΠΌΠΈΠ½ΡƒΡ‚ 10, стоит это ΠΊΠΎΠΏΠ΅ΠΉΠΊΠΈ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅, Ссли Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ, расскаТу ΠΎ YAML ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°Ρ…, Ρ‚Π°ΠΌ довольно ΠΌΠ½ΠΎΠ³ΠΎ интСрСсных Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ послСднСС врСмя.

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