Ngagunakeun variabel dina pipelines Azure DevOps

Kami neraskeun ulasan ngeunaan alat anu saé pikeun pangwangunan pikeun Windows sareng seueur deui, Azure DevOps. Waktos ieu, parantos ngalaman seueur variabel lingkungan, kuring mutuskeun pikeun nempatkeun sadaya pangalaman kana hiji tulisan.

Dimimitian tina kanyataan yén aranjeunna gaduh sintaksis anu béda pikeun unggal lingkungan palaksanaan, ditungtungan ku kurangna kamampuan standar pikeun mindahkeun variabel tina hiji tahap pipa ka anu sanés.

Kuring gé nyieun reservasi yén conto utama bakal on Release Pipelines, sabab YAML teu acan meunang aya, jeung Abdi peryogi fungsionalitas loba tahapan jeung loba artefak. Ieu, sigana, parantos sayogi dina Pipelines biasa, anu sacara praktis sami sareng fungsionalitasna. Dina Pipelines YAML, kami nambihan tooltip grafis leutik pikeun ngagambarkeun téks sareng parameter anu tiasa disetél. Gampang pisan; anjeun henteu kedah ngaliwat dokuméntasi pikeun unggal modul. Tapi kuring bakal ngajelaskeun ieu dina artikel salajengna, tapi pikeun ayeuna di dieu aya gambar tina inovasi sorangan.

Ngagunakeun variabel dina pipelines Azure DevOps

Panyimpenan sarta pamakéan

Hayu urang mimitian ku kanyataan yén urang gaduh variabel standar dina sistem. Aranjeunna dimimitian, gumantung kana asal maranéhanana, kalayan kecap Release, System, jsb. Daptar lengkep (sakumaha tétéla, teu), geus sadia di dokuméntasi. Sadaya schizophrenia sareng sintaksis digambarkeun ku conto tina dokuméntasi di handap ieu. Variabel sarua boga tilu representasi, gumantung kana dimana urang nelepon eta.

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)

Upami anjeun nyetél variabel dina agén dimana tugasna dieksekusi, éta $ (System.AccessToken). Upami anjeun hoyong nganggo éta dina skrip Powershell dina agén anu sami, éta bakal janten $ env: SYSTEM_ACCESSTOKEN. Upami anjeun, Gusti nyaram, hoyong nganggo variabel ieu dina sababaraha host jauh nganggo PowerShell dina tugas mesin target, anjeun kedah ngalangkungan ieu argumen kana naskah nganggo duit kuring. Kalayan bash langkung saderhana, anjeun ngan saukur tiasa ngaliwat ka jero nganggo argumen sareng sintaksis $ SYSTEM_ACCESSTOKEN.

Hukum anu sami henteu dilarapkeun ka variabel anjeun sorangan; di dieu anjeun parantos tanggung jawab kana sintaksis. Variabel tiasa diatur sacara lokal dina unggal tugas.

Ngagunakeun variabel dina pipelines Azure DevOps

Atanapi sacara global ka toko variabel, teras ngaitkeun aranjeunna tina toko. Nyaman pisan.

Ngagunakeun variabel dina pipelines Azure DevOps

Salaku bonus, upami variabelna rusiah pisan, aranjeunna tiasa disimpen dina awan Azure dina panyimpenan anu disebut Azure Vault; anjeun tiasa ngaitkeun Vault ka proyék di Perpustakaan.

Ngagunakeun variabel dina pipelines Azure DevOps

Sacara umum, sadayana jelas sareng variabel; dina saluran pipa aranjeunna masih tiasa disetél sacara manual pikeun unggal peluncuran; dina sékrési teu aya fungsionalitas sapertos kitu. Anjeun tiasa ningali naon anu anjeun mindahkeun kana pipa deui dina log initialization agén, tapi tetep dina pikiran yén maranéhna geus aya dina formulir dirobah.

Ngagunakeun variabel dina pipelines Azure DevOps

Variabel dinamis

Kasenangan dimimitian nalika urang hoyong nampi sababaraha nilai dina hiji tahap sareng lulus ka salajengna.

Ngagunakeun variabel dina pipelines Azure DevOps

Kami henteu disayogikeun fungsionalitas sapertos kitu. Tapi leungeun kami henteu bosen sareng kalayan bantosan Google mendakan solusi. Alhamdulilah, Azure DevOps gaduh API anu ngamungkinkeun urang ngalakukeun sakedik langkung seueur tibatan anu digambarkeun dina antarmuka.

Janten, urang peryogi telepon pikeun ngapdet variabel global, anu bakal urang laksanakeun langsung ti jero pipa. Alamatna dicandak tina variabel lingkungan, anu sami anu teu aya kecap dina dokuméntasi, sapertos anu disebatkeun sateuacana. Anjeun tiasa nyetél éta sorangan atanapi, naon deui, hardcode aranjeunna upami aranjeunna nutup toko.

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

Urang nyetel nilai kosong tina variabel nu urang hoyong nransper, set Wengkuan - Release

Ngagunakeun variabel dina pipelines Azure DevOps

Contona, urang nyieun sababaraha generator nilai acak. Nengetan sintaksis nyatakeun variabel dina tahap ieu; fungsionalitas ieu diwanohkeun.

Ngagunakeun variabel dina pipelines Azure DevOps

Dina lengkah saterusna, urang lulus variabel kana naskah, enya, enya, teu mungkin langsung, kudu ngaliwatan argumen.

Ngagunakeun variabel dina pipelines Azure DevOps

Skrip handapeun 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

atawa

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

Singkatna, naskah kami nyandak variabel myVar salaku input sareng nganggo API pikeun nempatkeun nilai variabel ieu kana stageVar. Dina léngkah salajengna, ngagunakeun sintaksis variabel sistem, urang tiasa ningali éta.

Ngagunakeun variabel dina pipelines Azure DevOps

Contona cukup saderhana, tapi pungsionalitasna muka kasempetan anu saé pikeun urang, salian ti baheula kuring artikel, nalika urang bisa nyieun mesin virtual dina tahap mimiti nguji, ngalakukeun sababaraha manipulasi salajengna jeung eta, sarta sababaraha dina paralel. Jeung tahap ahir nyaéta ngancurkeun eta. Ayeuna urang ngajalankeun autotests produk unggal waktos dina mesin virtual seger. Tempo yén maranéhna hirup salila kira 10 menit, éta waragad Penny a.

Dina tulisan salajengna, upami diperyogikeun, kuring bakal ngobrol ngeunaan saluran pipa YAML; parantos aya seueur inovasi anu pikaresepeun di dinya akhir-akhir ieu.

sumber: www.habr.com

Tambahkeun komentar