Lilo awọn oniyipada ni Azure DevOps pipelines

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ẹ.

Lilo awọn oniyipada ni Azure DevOps pipelines

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 iwe. Gbogbo schizophrenia pẹlu sintasi jẹ afihan nipasẹ apẹẹrẹ lati inu iwe ni isalẹ. Oniyipada kanna ni awọn aṣoju mẹta, da lori ibiti a ti pe.

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 owo mi. Pẹlu bash o rọrun julọ, o le nirọrun kọja si inu ni lilo ariyanjiyan ati sintasi $ SYSTEM_ACCESSTOKEN.

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.

Lilo awọn oniyipada ni Azure DevOps pipelines

Tabi agbaye si ile itaja oniyipada, ati lẹhinna so wọn pọ lati ile itaja. Ni itunu pupọ.

Lilo awọn oniyipada ni Azure DevOps pipelines

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.

Lilo awọn oniyipada ni Azure DevOps pipelines

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.

Lilo awọn oniyipada ni Azure DevOps pipelines

Ìmúdàgba Àyípadà

Idaraya naa bẹrẹ nigbati a fẹ gba iye diẹ ni ipele kan ki o kọja si ekeji.

Lilo awọn oniyipada ni Azure DevOps pipelines

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ẹ

Lilo awọn oniyipada ni Azure DevOps pipelines

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.

Lilo awọn oniyipada ni Azure DevOps pipelines

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.

Lilo awọn oniyipada ni Azure DevOps pipelines

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.

Lilo awọn oniyipada ni Azure DevOps pipelines

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 ìwé, nigba ti a le ṣẹda ẹrọ foju kan ni ipele akọkọ ti idanwo, ṣe diẹ ninu awọn ifọwọyi pẹlu rẹ, ati pupọ ni afiwe. Ati pe ipele ikẹhin ni lati pa a run. Bayi a nṣiṣẹ awọn adaṣe ti ọja ni gbogbo igba lori awọn ẹrọ foju tuntun. Ni imọran pe wọn n gbe fun bii iṣẹju 10, o jẹ penny kan.

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

Fi ọrọìwòye kun