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

ΠΠ±ΡΠΎ Π²Π·Π΅ΡΠΎ, Ρ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΎ Π΅ ΡΡΠ½ΠΎ; Π² 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
