ИзползванС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΈ 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 ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΡΠ²ΡŠΡ€Π·Π°Π½ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Library.

ИзползванС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΈ 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