ΠΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ ΠΏΡΠ΅Π³Π»Π΅Π΄Π° Π½Π° ΡΡΡΠ°Ρ ΠΎΡΠ½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π·Π° Windows ΠΈ Π½Π΅ ΡΠ°ΠΌΠΎ, Azure DevOps. Π’ΠΎΠ·ΠΈ ΠΏΡΡ, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠ΅ Π±ΠΎΡΠΈΡ Ρ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°, ΡΠ΅ΡΠΈΡ Π΄Π° ΠΎΠ±ΠΎΠ±ΡΡ ΡΠ΅Π»ΠΈΡ ΡΠΈ ΠΎΠΏΠΈΡ Π² Π΅Π΄Π½Π° ΡΡΠ°ΡΠΈΡ.
ΠΠ°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ ΡΠΎΠ²Π°, ΡΠ΅ Π·Π° Π²ΡΡΠΊΠ° ΡΡΠ΅Π΄Π° Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΈ Π·Π°Π²ΡΡΡΠ²Π°ΠΉΠΊΠΈ Ρ Π»ΠΈΠΏΡΠ°ΡΠ° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΏΡΠ΅Π½Π°ΡΡΠ½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΎΡ Π΅Π΄Π½Π° ΡΠ°Π·Π° Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° Π² Π΄ΡΡΠ³Π°.
Π©Π΅ ΡΡΠΎΡΠ½Ρ, ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π½Π° Release Pipelines, Π·Π°ΡΠΎΡΠΎ YAML Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΠΏΡΠΈΠ»Π°Π³Π°Π½ ΡΠ°ΠΌ, Π° Π½Π° ΠΌΠ΅Π½ ΠΌΠΈ ΡΡΡΠ±Π²Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΅ΡΠ°ΠΏΠΈ ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΈ. Π’ΠΎΠ²Π°, ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΡΠ°Π½Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π² ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡΠ΅ Pipelines, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π³ΠΈ ΠΈΠ·ΡΠ°Π²Π½ΡΠ²Π° ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ. Π Pipelines YAML Π΄ΠΎΠΏΡΠ»Π½ΠΈΡ
Π° ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ
Π° ΠΊΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΠ½Π΅ ΠΌΠ°Π»ΡΠΊ Π³ΡΠ°ΡΠΈΡΠ΅Π½ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ. ΠΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΡΠΎΠ²ΠΈΡΠ΅ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΌΠΎΠ΄ΡΠ». ΠΠΎ ΡΠΎΠ²Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ° Π² ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΡΠ°ΡΠΈΡ, Π° Π·Π° ΡΠ΅Π³Π° Π΅ΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΌΠΎΡΠΎ Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

Π‘ΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅
ΠΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Ρ ΡΠΎΠ²Π°, ΡΠ΅ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. Π’Π΅ Π·Π°ΠΏΠΎΡΠ²Π°Ρ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΠΏΡΠΎΠΈΠ·Ρ ΠΎΠ΄Π°, ΡΡΡ ΡΠ»ΠΎΠ²Π°ΡΠ° 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, ΡΡΡΠ±Π²Π° Π΄Π° Ρ ΠΏΡΠ΅Π΄Π°Π΄Π΅ΡΠ΅ ΡΡΠ΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π½Π° ΡΠΊΡΠΈΠΏΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ . Π‘ bash Π΅ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ, ΠΏΡΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Ρ ΠΏΡΠ΅Π΄Π°Π²Π°ΡΠ΅ Π²ΡΡΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° $SYSTEM_ACCESSTOKEN.
Π’Π΅Π·ΠΈ ΡΡΡΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π½Π΅ Π²Π°ΠΆΠ°Ρ Π·Π° Π²Π°ΡΠΈΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, ΡΡΠΊ Π²Π΅ΡΠ΅ Π²ΠΈΠ΅ Π½ΠΎΡΠΈΡΠ΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ Π·Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°. ΠΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ Π·Π° Π²ΡΡΠΊΠ° Π·Π°Π΄Π°ΡΠ°.

ΠΠ»ΠΈ Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΄Π° Π³ΠΈ Π»ΠΈΠ½ΠΊΠ²Π°ΡΠ΅ ΠΎΡ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ. ΠΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ.

ΠΠ°ΡΠΎ Π±ΠΎΠ½ΡΡ, Π°ΠΊΠΎ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π² ΠΎΠ±Π»Π°ΠΊΠ° Azure Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π½Π°ΡΠ΅ΡΠ΅Π½ΠΎ Azure Vault, Π° Vault ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π² Library.

Π ΠΎΠ±ΡΠΈ Π»ΠΈΠ½ΠΈΠΈ Ρ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΎ Π΅ ΡΡΠ½ΠΎ, Π² pipelines ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ Π·Π°Π΄Π°Π²Π°Ρ ΡΡΡΠ½ΠΎ Π·Π° Π²ΡΡΠΊΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅, Π½ΠΎ Π² release ΡΠ°ΠΊΠ°Π²Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π½ΡΠΌΠ°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ΅Π΄Π°Π²Π°ΡΠ΅ Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° ΠΎΡΠ½ΠΎΠ²ΠΎ Π² Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ Π·Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π°Π³Π΅Π½ΡΠ°, Π½ΠΎ ΠΈΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ ΡΠ°ΠΌ ΡΠ΅ Π²Π΅ΡΠ΅ ΡΠ° Π² ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ Π²ΠΈΠ΄.

ΠΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ
ΠΠ°ΠΉ-ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΡΠΎ Π·Π°ΠΏΠΎΡΠ²Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° Π΅Π΄ΠΈΠ½ Π΅ΡΠ°ΠΏ ΠΈ Π΄Π° Ρ ΠΏΡΠ΅Π΄Π°Π΄Π΅ΠΌ Π½Π° ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ.

Π’Π°ΠΊΠ°Π²Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π½Π΅ Π½ΠΈ Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½Π°. ΠΠΎ ΡΡΡΠ΅ΡΠ΅ Π½ΠΈ Π½Π΅ ΡΠ° Π±Π΅Π·Π΄Π΅Π»Π½ΠΈΡΠΈ ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° 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

ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠΌ Π½ΡΠΊΠ°ΠΊΡΠ² ΡΠ»ΡΡΠ°Π΅Π½ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ. ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π·Π° ΠΎΠ±ΡΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π² ΡΠΎΠ·ΠΈ Π΅ΡΠ°ΠΏ, ΡΠ°ΠΊΠ°Π²Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π°.

ΠΠ° ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ Π΅ΡΠ°ΠΏ ΠΏΡΠ΅Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π½Π° ΡΠΊΡΠΈΠΏΡΠ°, Π΄Π°, Π΄Π°, Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅, Π½ΡΠΆΠ½ΠΎ Π΅ ΡΡΠ΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½Ρ.

Π‘ΠΊΡΠΈΠΏΡ ΠΏΠΎΠ΄ ΡΠΏΠΎΠΉΠ»Π΅ΡΠ°
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. ΠΠ° ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ Π΅ΡΠ°ΠΏ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ Π²ΠΈΠ΄ΠΈΠΌ.

ΠΡΠΈΠΌΠ΅ΡΡΡ Π΅ Π΄ΠΎΡΡΠ° ΠΏΡΠΎΡΡ, Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½ΠΈ ΠΎΡΠ²Π°ΡΡ Π΄ΠΎΠ±ΡΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Ρ ΠΌΠΎΠ΅ΡΠΎ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΎ , ΠΊΠΎΠ³Π°ΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° Π½Π° ΠΏΡΡΠ²ΠΈΡ Π΅ΡΠ°ΠΏ ΠΎΡ ΡΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ, Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈΠΌ Ρ Π½Π΅Ρ Π½ΡΠΊΠΎΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΠΈ, ΠΈ ΡΠΎ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ Ρ Π½ΡΠΊΠΎΠ»ΠΊΠΎ. Π Π½Π° ΡΠΈΠ½Π°Π»Π½ΠΈΡ Π΅ΡΠ°ΠΏ Π΄Π° Ρ ΡΠ°Π·ΡΡΡΠΈΠΌ. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°ΠΌΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ Π½Π° Π½ΠΎΠ²ΠΈ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ. Π‘ ΠΎΠ³Π»Π΅Π΄ Π½Π° ΡΠΎΠ²Π°, ΡΠ΅ ΠΆΠΈΠ²Π΅ΡΡ ΠΎΠΊΠΎΠ»ΠΎ 10 ΠΌΠΈΠ½ΡΡΠΈ, ΡΠΎΠ²Π° ΡΡΡΡΠ²Π° ΠΌΠ°Π»ΠΊΠΎ.
Π ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΡΠ°ΡΠΈΡ, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ, ΡΠ΅ ΡΠ°Π·ΠΊΠ°ΠΆΠ° Π·Π° YAML ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΈΡΠ΅, ΡΠ°ΠΌ ΠΈΠΌΠ° Π΄ΠΎΡΡΠ° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΈ Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ Π½Π°ΠΏΠΎΡΠ»Π΅Π΄ΡΠΊ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
