Azure DevOps kanalizazioetan aldagaiak erabiltzea

Windows eta gehiagorako garatzeko tresna zoragarri baten berrikuspenarekin jarraitzen dugu, Azure DevOps. Oraingoan, ingurune-aldagaiekin asko sufritu ostean, esperientzia guztia artikulu batean jartzea erabaki dut.

Exekuzio-ingurune bakoitzerako sintaxi desberdina dutela abiapuntutzat hartuta, kanalizazioko etapa batetik bestera aldagaiak transferitzeko gaitasun estandarrik ezarekin amaituz.

Erreserba bat egingo dut adibide nagusiak Release Pipelines-en egongo direla, YAML oraindik ez delako iritsi, eta etapa askoren eta artefaktu askoren funtzionaltasuna behar dudalako. Badirudi hori Pipeline arruntetan eskuragarri egon dela, eta horrek ia funtzionaltasunean berdin du. Pipelines YAML-n, testuaren irudikapenari tresna grafiko txiki bat gehitu diogu ezar daitezkeen parametroekin. Oso erosoa da; ez duzu modulu bakoitzeko dokumentazioa pasatu beharrik. Baina hurrengo artikuluan deskribatuko dut, baina oraingoz hona hemen berrikuntzaren beraren argazkia.

Azure DevOps kanalizazioetan aldagaiak erabiltzea

Biltegiratzea eta erabiltzea

Has gaitezen sisteman aldagai lehenetsiak ditugula. Jatorriaren arabera hasten dira Askatu, Sistema, etab. Zerrenda osoa (ikusten denez, ez) helbidean dago eskuragarri dokumentazioa. Sintaxia duten eskizofrenia guztiak beheko dokumentazioko adibide batekin azaltzen dira. Aldagai berak hiru irudikapen ditu, deitzen diogun lekuaren arabera.

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)

Ataza exekutatzen den agentean aldagai bat ezartzen baduzu, $(System.AccessToken) da. Agente berean powershell script baten barruan erabili nahi baduzu, $env:SYSTEM_ACCESSTOKEN izango da dagoeneko. Jainkoak ez dezala, aldagai hau urruneko ostalariren batean erabili nahi baduzu PowerShell xede-makinen ataza erabiliz, hau argumentu baten bidez pasa behar duzu script-era erabiliz. nire dirua. Bash-ekin sinpleagoa da, barrura pasa dezakezu $SYSTEM_ACCESSTOKEN argumentua eta sintaxia erabiliz.

Lege berdinak ez dira zure aldagaietan aplikatzen; hemen dagoeneko zu zara sintaxiaren arduraduna. Aldagaiak lokalean ezar daitezke zeregin bakoitzean.

Azure DevOps kanalizazioetan aldagaiak erabiltzea

Edo globalki aldagai dendara, eta gero lotu dendatik. Oso eroso.

Azure DevOps kanalizazioetan aldagaiak erabiltzea

Hobari gisa, aldagaiak oso sekretuak badira, Azure hodeian gorde daitezke Azure Vault izeneko biltegiratze batean; Vault liburutegiko proiektuarekin lotu dezakezu.

Azure DevOps kanalizazioetan aldagaiak erabiltzea

Orokorrean, dena argi dago aldagaiekin; kanalizazioetan oraindik eskuz ezar daitezke abiarazte bakoitzean; bertsioan ez dago funtzionaltasun hori. Agentearen hasierako erregistroetan berriro ikus dezakezu kanalera transferitzen ari zarena, baina kontuan izan dagoeneko hor daudela bihurtutako moduan.

Azure DevOps kanalizazioetan aldagaiak erabiltzea

Aldagai dinamikoak

Dibertsioa etapa batean balioren bat jaso eta hurrengora pasa nahi dugunean hasten da.

Azure DevOps kanalizazioetan aldagaiak erabiltzea

Ez ziguten horrelako funtzionalitaterik eman. Baina gure eskuak ez dira aspertzeko eta Googleren laguntzarekin irtenbide bat aurkitu zen. Jainkoari eskerrak, Azure DevOps-ek interfazean azaltzen zena baino apur bat gehiago egiteko aukera ematen duen API bat dauka.

Beraz, aldagai globalak eguneratzeko dei bat beharko dugu, zuzenean kanalizaziotik egingo duguna. Helbidea ingurune-aldagaietatik hartua da, dokumentazioan hitzik ez dagoen berberetatik, lehen esan bezala. Zuk zeuk ezar ditzakezu edo, are gehiago, gogor kodetu ditzakezu denda ixten badute.

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

Transferitu nahi dugun aldagaiaren balio hutsa ezarri dugu, Scope - Release ezarri

Azure DevOps kanalizazioetan aldagaiak erabiltzea

Adibidez, ausazko balio-sorgailu batzuk egiten ditugu. Erreparatu etapa honen barruan aldagai bat deklaratzeko sintaxiari; funtzionalitate hau sartu zen.

Azure DevOps kanalizazioetan aldagaiak erabiltzea

Hurrengo urratsean, aldagaia gidoiari pasatzen diogu, bai, bai, zuzenean ez da posible, argumentu baten bidez izan behar du.

Azure DevOps kanalizazioetan aldagaiak erabiltzea

Gidoia spoiler azpian

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

edo

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

Laburbilduz, gure script-ak myVar aldagaia hartzen du sarrera gisa eta APIa erabiltzen du aldagai honen balioa stageVar-en jartzeko. Hurrengo urratsean, sistema aldagaiaren sintaxia erabiliz, begiratu dezakegu.

Azure DevOps kanalizazioetan aldagaiak erabiltzea

Adibidea nahiko sinplea da, baina funtzionaltasunak aukera onak zabaltzen dizkigu, nire aurrekoaz gain Artikulu, probaren lehen fasean makina birtual bat sor dezakegunean, harekin manipulazio gehiago egin, eta paraleloan hainbat. Eta azken fasea suntsitzea da. Orain produktuaren autotestak egiten ditugu makina birtual berrietan. 10 minutu inguru bizi direla kontuan hartuta, zentimo bat kostatzen da.

Hurrengo artikuluan, behar izanez gero, YAML kanalei buruz hitz egingo dut; azkenaldian berrikuntza interesgarri asko egon dira bertan.

Iturria: www.habr.com

Gehitu iruzkin berria