ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΠΎΠ±Π·ΠΎΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ»Ρ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ΄ Windows ΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ, Azure DevOps. ΠΠ° ΡΡΠΎΡ ΡΠ°Π·, Π½Π°ΠΌΡΡΠ°Π²ΡΠΈΡΡ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, Ρ ΡΠ΅ΡΠΈΠ» Π²ΡΠ½Π΅ΡΡΠΈ Π²Π΅ΡΡ ΠΎΠΏΡΡ Π² ΠΎΠ΄Π½Ρ ΡΡΠ°ΡΡΡ.
ΠΠ°ΡΠΈΠ½Π°Ρ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ΅Π΄Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Ρ Π½ΠΈΡ
ΡΠ°Π·Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΎΠΊΠ°Π½ΡΠΈΠ²Π°Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ°Π΄ΠΈΠΈ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π° Π² Π΄ΡΡΠ³ΡΡ.
ΠΠ³ΠΎΠ²ΠΎΡΡΡΡ, ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π±ΡΠ΄ΡΡ Π½Π° Release Pipelines, ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ YAML ΡΡΠ΄Π° Π΅ΡΠ΅ Π½Π΅ Π΄ΠΎΠ΅Ρ
Π°Π», Π° ΠΌΠ½Π΅ Π½ΡΠΆΠ½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΡΠ°ΠΏΠΎΠ² ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΎΠ². ΠΡΠΎ, Π²ΡΠΎΠ΄Π΅, ΡΡΠ°Π»ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π² ΠΎΠ±ΡΡΠ½ΡΡ
Pipelines, ΡΡΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎΠ²Π½ΡΠ»ΠΎ ΠΈΡ
ΠΏΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ. Π Pipelines YAML Π΄ΠΎΠΏΠΈΠ»ΠΈΠ»ΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΊ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π½Π΅Π±ΠΎΠ»ΡΡΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ. ΠΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π½Π΅ Π½Π°Π΄ΠΎ Π»Π΅Π·ΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΠΎ ΡΡΠΎ Π±ΡΠ΄Ρ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅, Π° ΠΏΠΎΠΊΠ° Π²ΠΎΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° ΡΠ°ΠΌΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΡ.
Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ½ΠΈ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΡΠΎΠΈΡΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ, ΡΠΎ ΡΠ»ΠΎΠ² 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, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡΠΎ ΡΠ΅ΡΠ΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊ ΡΠΊΡΠΈΠΏΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ
Π’Π΅ ΠΆΠ΅ Π·Π°ΠΊΠΎΠ½Ρ Π½Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠΎΠ½ΡΡΡΡΡ Π½Π° Π²Π°ΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΡΡΡ ΡΠΆΠ΅ Π²Ρ Π½Π΅ΡΠ΅ΡΠ΅ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. ΠΠ°Π΄Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅.
ΠΠ»ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎ Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, Π° ΠΏΠΎΡΠΎΠΌ Π»ΠΈΠ½ΠΊΠΎΠ²Π°ΡΡ ΠΈΡ
ΠΈΠ· Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. ΠΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ.
ΠΠΎΠ½ΡΡΠΎΠΌ ΠΊ ΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΈΠ±ΠΊΠΎ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠ΅, ΠΈΡ
ΠΌΠΎΠΆΠ½ΠΎ Ρ
ΡΠ°Π½ΠΈΡΡ Π² ΠΎΠ±Π»Π°ΠΊΠ΅ Azure Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Azure Vault, Π·Π°Π»ΠΈΠ½ΠΊΠΎΠ²Π°ΡΡ Vault ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π² Library.
Π ΡΠ΅Π»ΠΎΠΌ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ Π²ΡΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, Π² pipelines ΠΈΡ
Π΅ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ Π² ΡΡΡΠ½ΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π·Π°ΠΏΡΡΠΊ, Π² release ΡΠ°ΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ Π½Π΅Ρ. ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΠΎ Π²Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΠ΅ Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ ΠΌΠΎΠΆΠ½ΠΎ Π΅ΡΠ΅ ΡΠ°Π· Π² Π»ΠΎΠ³Π°Ρ
ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π³Π΅Π½ΡΠ°, Π½ΠΎ ΡΡΡΠΈΡΠ΅, ΠΎΠ½ΠΈ ΡΠ°ΠΌ ΡΠΆΠ΅ Π² ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅.
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
Π‘Π°ΠΌΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅Π³ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ.
Π’Π°ΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ Π½Π°ΠΌ Π½Π΅ Π·Π°Π²Π΅Π·Π»ΠΈ. ΠΠΎ Π½Π°ΡΠΈ ΡΡΠΊΠΈ Π½Π΅ Π΄Π»Ρ ΡΠΊΡΠΊΠΈ ΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π³ΡΠ³Π»Π° Π±ΡΠ»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π‘Π»Π°Π²Π° Π±ΠΎΠ³Ρ, Ρ 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. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠ°ΠΏΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ.
ΠΡΠΈΠΌΠ΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ, Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ Π½Π°ΠΌ Ρ
ΠΎΡΠΎΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π² ΡΡΠΌΠΌΠ΅ Ρ ΠΌΠΎΠ΅ΠΉ ΠΏΡΠΎΡΠ»ΠΎΠΉ
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅, Π΅ΡΠ»ΠΈ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ, ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ YAML ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°Ρ
, ΡΠ°ΠΌ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ
Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com