ИзползванС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² Azure DevOps ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΈ

ΠŸΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ ΠΏΡ€Π΅Π³Π»Π΅Π΄Π° Π½Π° чудСсния инструмСнт Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π° Windows ΠΈ Π½Π΅ само, Azure DevOps. Π’ΠΎΠ·ΠΈ ΠΏΡŠΡ‚, слСд ΠΊΠ°Ρ‚ΠΎ сС ΠΌΡŠΡ‡ΠΈΡ… с ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ Π½Π° срСдата, Ρ€Π΅ΡˆΠΈΡ… Π΄Π° обобщя цСлия ΠΎΠΏΠΈΡ‚ Π² Π΅Π΄Π½Π° статия.

Π—Π°ΠΏΠΎΡ‡Π²Π°ΠΉΠΊΠΈ ΠΎΡ‚ Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ Π·Π° всяка срСда Π½Π° изпълнСниС ΠΈΠΌΠ°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ синтаксис, Π΄ΠΎ ΠΎΡ‚ΡΡŠΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° стандартна Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° прСнос Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΎΡ‚ Π΅Π΄Π½Π° Ρ„Π°Π·Π° Π½Π° ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° Π² Π΄Ρ€ΡƒΠ³Π°.

Врябва Π΄Π° уточня, Ρ‡Π΅ основнитС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Π½Π° Release Pipelines, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ YAML ΠΎΡ‰Π΅ Π½Π΅ Π΅ достигнал Ρ‚Π°ΠΌ, Π° Π½Π° ΠΌΠ΅Π½ ΠΌΠΈ Π΅ Π½ΡƒΠΆΠ½Π° функционалността Π½Π° мноТСство Π΅Ρ‚Π°ΠΏΠΈ ΠΈ мноТСство Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΈ. Π’ΠΎΠ²Π°, ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, стана Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎ Π² ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ‚Π΅ Pipelines, ΠΊΠΎΠ΅Ρ‚ΠΎ практичСски Π³ΠΈ ΠΈΠ·Ρ€Π°Π²Π½ΠΈ ΠΏΠΎ функционалност. Π’ Pipelines YAML Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΈΡ…Π° ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ…Π° към тСкстовото прСдставянС, малък Π³Ρ€Π°Ρ„ΠΈΡ‡Π΅Π½ ΡΡŠΠ²Π΅Ρ‚Π½ΠΈΠΊ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅. Много ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Π½Π΅ Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° ΠΏΡ€Π΅Π³Π»Π΅ΠΆΠ΄Π°Ρ‚Π΅ докумСнтацията Π·Π° всСки ΠΌΠΎΠ΄ΡƒΠ». Но Ρ‚ΠΎΠ²Π° Ρ‰Π΅ опиша Π² слСдващата статия, Π° засСга Π΅Ρ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° самото нововъвСдСниС.

ИзползванС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² Azure DevOps ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΈ

Π‘ΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅

Π—Π°ΠΏΠΎΡ‡Π²Π°ΠΌΠ΅ с Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ Π² систСмата ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅. Π’Π΅ Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚, Π² зависимост ΠΎΡ‚ ΠΏΡ€ΠΎΠΈΠ·Ρ…ΠΎΠ΄Π°, със словата Release, System ΠΈ Π΄Ρ€. ПълСн списък (ΠΊΠ°ΠΊΡ‚ΠΎ сС ΠΎΠΊΠ°Π·Π°, няма Ρ‚Π°ΠΊΡŠΠ²), Π΅ Π½Π°Π»ΠΈΡ‡Π΅Π½ Π² докумСнтацията. Цялата ΡˆΠΈΠ·ΠΎΡ„Ρ€Π΅Π½ΠΈΡ със синтаксиса Π΅ ΠΈΠ»ΡŽΡΡ‚Ρ€ΠΈΡ€Π°Π½Π° с ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ докумСнтацията ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ. Π—Π° Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° ΠΈΠΌΠ° Ρ‚Ρ€ΠΈ прСдставлСния, Π² зависимост ΠΎΡ‚ Ρ‚ΠΎΠ²Π°, къдС я ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΠΌΠ΅.

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 Π΄Π° бъдС ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π°.

ИзползванС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² Azure DevOps ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΈ

ΠžΠ±Ρ‰ΠΎ Π²Π·Π΅Ρ‚ΠΎ, с ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ всичко Π΅ ясно; Π² pipelines ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ Π·Π°Π΄Π°Π²Π°Ρ‚Π΅ Ρ€ΡŠΡ‡Π½ΠΎ Π·Π° всяко стартиранС, Π½ΠΎ Π² release Ρ‚Π°ΠΊΠ°Π²Π° функционалност липсва. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚Π΅ Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° Π² Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π·Π° инициализация Π½Π° Π°Π³Π΅Π½Ρ‚Π°, Π½ΠΎ ΠΈΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ Ρ‚Π°ΠΌ Ρ‚Π΅ са Π² ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½ Π²ΠΈΠ΄.

ИзползванС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² Azure DevOps ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΈ

Π”ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ

Най-интСрСсното Π·Π°ΠΏΠΎΡ‡Π²Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ искамС Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ стойност Π½Π° Π΅Π΄ΠΈΠ½ Π΅Ρ‚Π°ΠΏ ΠΈ Π΄Π° я ΠΏΡ€Π΅Π΄Π°Π΄Π΅ΠΌ Π½Π° слСдващия.

ИзползванС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² Azure DevOps ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΈ

Π’Π°ΠΊΠ°Π²Π° функционалност Π½Π΅ Π΅ Π½Π°Π»ΠΈΡ‡Π½Π°. Но Π½Π°ΡˆΠΈΡ‚Π΅ Ρ€ΡŠΡ†Π΅ Π½Π΅ са Π·Π° скука ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Google Π½Π°ΠΌΠ΅Ρ€ΠΈΡ…ΠΌΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Π—Π° щастиС, 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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster