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.
Biltegiratzea eta erabiltzea
Has gaitezen sisteman aldagai lehenetsiak ditugula. Jatorriaren arabera hasten dira Askatu, Sistema, etab. Zerrenda osoa (ikusten denez, ez) helbidean dago eskuragarri
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.
Lege berdinak ez dira zure aldagaietan aplikatzen; hemen dagoeneko zu zara sintaxiaren arduraduna. Aldagaiak lokalean ezar daitezke zeregin bakoitzean.
Edo globalki aldagai dendara, eta gero lotu dendatik. Oso eroso.
Hobari gisa, aldagaiak oso sekretuak badira, Azure hodeian gorde daitezke Azure Vault izeneko biltegiratze batean; Vault liburutegiko proiektuarekin lotu dezakezu.
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.
Aldagai dinamikoak
Dibertsioa etapa batean balioren bat jaso eta hurrengora pasa nahi dugunean hasten da.
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
Adibidez, ausazko balio-sorgailu batzuk egiten ditugu. Erreparatu etapa honen barruan aldagai bat deklaratzeko sintaxiari; funtzionalitate hau sartu zen.
Hurrengo urratsean, aldagaia gidoiari pasatzen diogu, bai, bai, zuzenean ez da posible, argumentu baten bidez izan behar du.
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.
Adibidea nahiko sinplea da, baina funtzionaltasunak aukera onak zabaltzen dizkigu, nire aurrekoaz gain
Hurrengo artikuluan, behar izanez gero, YAML kanalei buruz hitz egingo dut; azkenaldian berrikuntza interesgarri asko egon dira bertan.
Iturria: www.habr.com