A tẹsiwaju atunyẹwo wa ti irinṣẹ iyanu fun idagbasoke fun Windows ati diẹ sii, Azure DevOps. Ni akoko yii, ti jiya pupọ pẹlu awọn oniyipada ayika, Mo pinnu lati fi gbogbo iriri naa sinu nkan kan.
Bibẹrẹ lati otitọ pe wọn ni oriṣiriṣi sintasi fun agbegbe ipaniyan kọọkan, ipari pẹlu aini agbara boṣewa lati gbe awọn oniyipada lati ipele kan ti opo gigun ti epo si omiran.
Emi yoo ṣe ifiṣura pe awọn apẹẹrẹ akọkọ yoo wa lori Awọn Pipeline Tu silẹ, nitori YAML ko ti de ibẹ sibẹsibẹ, ati pe Mo nilo iṣẹ ṣiṣe ti awọn ipele pupọ ati ọpọlọpọ awọn ohun-ọṣọ. Eyi, o dabi pe, ti di wa ni awọn Pipelines deede, eyiti o dọgba deede wọn ni iṣẹ ṣiṣe. Ni Pipelines YAML, a ṣafikun itọsi irinṣẹ ayaworan kekere kan si aṣoju ọrọ pẹlu awọn aye ti o le ṣeto. O rọrun pupọ; o ko ni lati lọ nipasẹ iwe-ipamọ fun module kọọkan. Ṣugbọn emi yoo ṣe apejuwe eyi ni nkan ti o tẹle, ṣugbọn fun bayi nibi ni aworan ti ĭdàsĭlẹ funrararẹ.
Ibi ipamọ ati lilo
Jẹ ki a bẹrẹ pẹlu otitọ pe a ni awọn oniyipada aiyipada ninu eto naa. Wọn bẹrẹ, da lori ipilẹṣẹ wọn, pẹlu awọn ọrọ Tu silẹ, Eto, ati bẹbẹ lọ. Akojọ kikun (bi o ti wa ni jade, kii ṣe), wa ni
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)
Ti o ba ṣeto oniyipada lori oluranlowo lori eyiti a ṣe iṣẹ naa, o jẹ $ (System.AccessToken). Ti o ba fẹ lo ninu iwe afọwọkọ agbara lori aṣoju kanna, yoo ti jẹ $env:SYSTEM_ACCESSTOKEN. Ti o ba jẹ, Ọlọrun kọ, fẹ lati lo oniyipada yii lori diẹ ninu awọn agbalejo latọna jijin nipa lilo PowerShell lori iṣẹ-ṣiṣe awọn ẹrọ ibi-afẹde, o nilo lati kọja eyi nipasẹ ariyanjiyan si iwe afọwọkọ nipa lilo
Awọn ofin kanna ko lo si awọn oniyipada tirẹ; nibi o ti ni iduro tẹlẹ fun sintasi naa. Awọn oniyipada le ṣee ṣeto ni agbegbe ni iṣẹ-ṣiṣe kọọkan.
Tabi agbaye si ile itaja oniyipada, ati lẹhinna so wọn pọ lati ile itaja. Ni itunu pupọ.
Gẹgẹbi ẹbun, ti awọn oniyipada ba jẹ aṣiri pupọ, wọn le wa ni fipamọ sinu awọsanma Azure ni ibi ipamọ ti a pe ni Azure Vault; o le sopọ Vault si iṣẹ akanṣe ni Ile-ikawe naa.
Ni gbogbogbo, ohun gbogbo jẹ kedere pẹlu awọn oniyipada; ni awọn pipeline wọn tun le ṣeto pẹlu ọwọ fun ifilọlẹ kọọkan; ni itusilẹ ko si iru iṣẹ ṣiṣe bẹẹ. O le wo ohun ti o n gbe lọ si opo gigun ti epo lẹẹkansi ninu awọn iforukọsilẹ ipilẹṣẹ aṣoju, ṣugbọn ni lokan pe wọn ti wa tẹlẹ ni fọọmu iyipada.
Ìmúdàgba Àyípadà
Idaraya naa bẹrẹ nigbati a fẹ gba iye diẹ ni ipele kan ki o kọja si ekeji.
A ko pese pẹlu iru iṣẹ ṣiṣe. Ṣugbọn awọn ọwọ wa kii ṣe fun alaidun ati pẹlu iranlọwọ ti Google a ri ojutu kan. Ṣeun Ọlọrun, Azure DevOps ni API ti o fun wa laaye lati ṣe diẹ sii ju ohun ti a fihan ni wiwo.
Nitorinaa, a yoo nilo ipe lati ṣe imudojuiwọn awọn oniyipada agbaye, eyiti a yoo ṣe taara lati inu opo gigun ti epo. Adirẹsi naa ni a gba lati awọn oniyipada ayika, awọn kanna ti ko si ọrọ kan ninu iwe, bi a ti sọ tẹlẹ. O le ṣeto wọn funrararẹ tabi, kini diẹ sii, koodu lile wọn ti wọn ba ti ile itaja naa.
$releaseurl = ('{0}{1}/_apis/release/releases/{2}?api-version=5.0' -f $($env:SYSTEM_TEAMFOUNDATIONSERVERURI), $($env:SYSTEM_TEAMPROJECTID), $($env:RELEASE_RELEASEID) )
A ṣeto iye ofo ti oniyipada ti a fẹ gbe, ṣeto Dopin - Tu silẹ
Fun apẹẹrẹ, a ṣe diẹ ninu awọn ID iye monomono. San ifojusi si sintasi ti ikede oniyipada inu ipele yii; iṣẹ ṣiṣe yii ti ṣe afihan.
Ni igbesẹ ti n tẹle, a kọja iyipada si iwe afọwọkọ, bẹẹni, bẹẹni, ko ṣee ṣe taara, o gbọdọ jẹ nipasẹ ariyanjiyan.
Akosile labẹ afiniṣeijẹ
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
Tabi
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
Ni kukuru, iwe afọwọkọ wa gba myVar oniyipada bi titẹ sii ati lo API lati fi iye oniyipada yii sinu stageVar. Ni igbesẹ ti n tẹle, lilo sintasi oniyipada eto, a le wo o.
Apẹẹrẹ jẹ ohun rọrun, ṣugbọn iṣẹ ṣiṣe ṣii awọn aye to dara fun wa, ni afikun si iṣaaju mi
Ninu nkan ti o tẹle, ti o ba jẹ dandan, Emi yoo sọrọ nipa awọn opo gigun ti YAML; ọpọlọpọ awọn imotuntun ti o nifẹ si wa nibẹ laipẹ.
orisun: www.habr.com