Kushandisa zvinosiyana muAzure DevOps mapaipi

Isu tinoenderera mberi nekuongorora kwedu kwechishandiso chinoshamisa chekusimudzira Windows uye nezvimwe, Azure DevOps. Panguva ino, ndatambura zvakanyanya nekusiyana kwenzvimbo, ndakafunga kuisa ruzivo rwese muchinyorwa chimwe.

Kutanga kubva pakuziva kuti vane syntax yakasiyana yenzvimbo yega yega yekuurayisa, ichipera nekushaikwa kwekugona kufambisa zvinosiyana kubva pane imwe nhanho yepombi kuenda kune imwe.

Ini ndichachengeta kuti mienzaniso mikuru ichave paKuburitsa Mapaipi, nekuti YAML haisati yasvika ipapo, uye ini ndinoda kushanda kwematanho mazhinji uye akawanda ekugadzira. Izvi, zvinoita sekunge, zvave kuwanikwa mumaPipelines enguva dzose, ayo akaenzana nawo mukushanda. MuPipelines YAML, isu takawedzera diki graphical tooltip kune inomiririra mavara ane paramita anogona kusetwa. Zviri nyore kwazvo; haufanirwe kuenda nepakati pezvinyorwa zvemodule yega yega. Asi ini ndichatsanangura izvi munyaya inotevera, asi ikozvino heino mufananidzo wehutsva pachayo.

Kushandisa zvinosiyana muAzure DevOps mapaipi

Kuchengeta uye kushandisa

Ngatitangei nenyaya yekuti isu tine default variables muhurongwa. Ivo vanotanga, zvichienderana nekwavakabva, nemashoko okuti Release, System, etc. Rondedzero yakazara (sezvazvinoita, kwete), inowanikwa pa zvinyorwa. Yese schizophrenia ine syntax inoratidzwa nemuenzaniso kubva pane zvinyorwa pazasi. Mutsauko mumwechetewo une zvirevo zvitatu, zvichienderana nekuti tinozvidaidza papi.

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)

Kana iwe ukaisa shanduko pane mumiririri pairi basa rinoitwa, iri $(System.AccessToken). Kana iwe uchida kuishandisa mukati mepowershell script pane imwecheteyo agent, inenge yatova $env:SYSTEM_ACCESSTOKEN. Kana iwe, Mwari varamba, uchida kushandisa shanduko iyi pane imwe nzvimbo iri kure uchishandisa PowerShell pane inotangwa muchina basa, unofanirwa kupfuura izvi kuburikidza nekupokana kune script uchishandisa. mari yangu. Nebash zviri nyore, unogona kungozvipfuudza mukati uchishandisa nharo uye syntax $SYSTEM_ACCESSTOKEN.

Mitemo mimwecheteyo haishande kune ako akasiyana siyana; pano iwe ndiwe watove nebasa reiyo syntax. Variables zvinogona kusetwa munzvimbo mune yega yega basa.

Kushandisa zvinosiyana muAzure DevOps mapaipi

Kana pasi rose kuchitoro chinoshanduka, wobva wazvibatanidza kubva muchitoro. Zvakanaka kwazvo.

Kushandisa zvinosiyana muAzure DevOps mapaipi

Sebhonasi, kana iwo akasiyana akavanzika kwazvo, anogona kuchengetwa muAzure gore mune yekuchengetedza inonzi Azure Vault; unogona kubatanidza Vault kune purojekiti muLibhurari.

Kushandisa zvinosiyana muAzure DevOps mapaipi

Muzhinji, zvese zviri pachena nezvinosiyana; mumapaipi anogona achiri kusetwa nemaoko kune yega yega kutanga; mukuburitswa hakuna kuita kwakadai. Iwe unogona kuona zvauri kuendesa kune pombi zvakare mune ejenti yekutanga matanda, asi ramba uchifunga kuti ivo vatovepo mune yakashandurwa fomu.

Kushandisa zvinosiyana muAzure DevOps mapaipi

Dynamic Variables

Kunakidzwa kunotanga apo isu tinoda kugashira kumwe kukosha muchikamu chimwe tochipfuudza kune chinotevera.

Kushandisa zvinosiyana muAzure DevOps mapaipi

Hatina kupihwa mashandiro akadai. Asi maoko edu haasi ekufinhwa uye nerubatsiro rweGoogle mhinduro yakawanikwa. Ndinotenda Mwari, Azure DevOps ine API inotitendera kuti tiite zvishoma pane izvo zvakaratidzwa mune interface.

Saka, isu tichada kufona kuti tigadzirise machinjiro epasi rose, izvo zvatichaita zvakananga kubva mukati mepombi. Kero inotorwa kubva kune zvakatipoteredza zvinosiyana, zvakafanana izvo pasina izwi nezve muzvinyorwa, sezvambotaurwa. Iwe unogona kuzvimisa iwe pachako kana, zvakanyanya, hardcode ivo kana vakavhara chitoro.

$releaseurl = ('{0}{1}/_apis/release/releases/{2}?api-version=5.0' -f $($env:SYSTEM_TEAMFOUNDATIONSERVERURI), $($env:SYSTEM_TEAMPROJECTID), $($env:RELEASE_RELEASEID)  )

Isu tinoseta iyo isina chinhu kukosha kweiyo vhezheni yatinoda kuendesa, isa Scope - Release

Kushandisa zvinosiyana muAzure DevOps mapaipi

Semuyenzaniso, isu tinoita mamwe random value jenareta. Teerera kune syntax yekuzivisa shanduko mukati mechikamu ichi; mashandiro aya akaunzwa.

Kushandisa zvinosiyana muAzure DevOps mapaipi

Muchikamu chinotevera, tinopfuudza shanduko kune script, hongu, hongu, hazvigoneke zvakananga, inofanira kunge iri kuburikidza nekukakavara.

Kushandisa zvinosiyana muAzure DevOps mapaipi

Script pasi pe spoiler

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

Kana

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

Muchidimbu, script yedu inotora shanduko myVar sekuisa uye inoshandisa iyo API kuisa kukosha kweiyo shanduko mustageVar. Muchinhanho chinotevera, tichishandisa system variable syntax, tinogona kuzvitarisa.

Kushandisa zvinosiyana muAzure DevOps mapaipi

Muenzaniso uri nyore, asi kushanda kunovhura mikana yakanaka kwatiri, kuwedzera kune yangu yapfuura zvinyorwa, patinokwanisa kugadzira muchina chaiwo padanho rekutanga rekuyedza, ita mamwe manipulations nawo, uye akati wandei akafanana. Uye danho rekupedzisira nderekuriparadza. Iye zvino isu tinomhanyisa autotests yechigadzirwa nguva dzese pamakina matsva chaiwo. Tichifunga kuti vanorarama kwemaminetsi angangoita gumi, zvinodhura peni.

Muchinyorwa chinotevera, kana zvichidikanwa, ndichataura nezve YAML mapaipi; pakave neakawanda anonakidza magadzirirwo ipapo nguva pfupi yadarika.

Source: www.habr.com

Voeg