Kusetshenziswa okuguquguqukayo kumapayipi we-Azure DevOps

Siyaqhubeka nokubuyekeza kwethu ithuluzi elihle lokuthuthukisa iWindows nokunye, i-Azure DevOps. Kulokhu, njengoba ngihlupheke kakhulu ngokuhlukahluka kwemvelo, nganquma ukubeka konke okuhlangenwe nakho esihlokweni esisodwa.

Kusukela eqinisweni lokuthi bane-syntax ehlukile yendawo ngayinye yokwenza, egcina ngokuntula ikhono elijwayelekile lokudlulisa okuguquguqukayo ukusuka kwesinye isigaba sepayipi ukuya kwesinye.

Ngizokwenza ukubhuka ukuthi izibonelo eziyinhloko zizoba Kumapayipi Okukhishwa, ngoba i-YAML ayikafiki lapho, futhi ngidinga ukusebenza kwezigaba eziningi nezinto zobuciko eziningi. Lokhu, kubonakala, sekutholakala kumaPipelines avamile, alingana nawo ngokusebenza. Emapayipini e-YAML, sengeze ithiphu elincane lesithombe ekumelelweni kombhalo ngamapharamitha angasethwa. Kulula kakhulu; awudingi ukudlula imibhalo yemojuli ngayinye. Kodwa ngizokuchaza lokhu esihlokweni esilandelayo, kodwa okwamanje nansi isithombe se-innovation ngokwayo.

Kusetshenziswa okuguquguqukayo kumapayipi we-Azure DevOps

Isitoreji kanye nokusetshenziswa

Ake siqale ngeqiniso lokuthi sinokuguquguquka okuzenzakalelayo ohlelweni. Aqala, kuye ngemvelaphi yawo, ngamagama athi Khulula, Uhlelo, njll. Uhlu olugcwele (njengoba luvela, akunjalo), luyatholakala ku- imibhalo. Yonke i-schizophrenia ene-syntax iboniswa ngesibonelo esivela emibhalweni engezansi. Okuguquguqukayo okufanayo kunezethulo ezintathu, kuye ngokuthi sikubiza kuphi.

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)

Uma usetha okuguquguqukayo kumenzeli lapho umsebenzi wenziwe khona, kungu-$(System.AccessToken). Uma ufuna ukuyisebenzisa ngaphakathi kweskripthi se-powershell kumenzeli ofanayo, isizoba ngu-$env:SYSTEM_ACCESSTOKEN. Uma wena, uNkulunkulu ekwenqabela, ufuna ukusebenzisa lokhu okuguquguqukayo kumsingathi othile oqhelile usebenzisa i-PowerShell emshinini oqondiwe umsebenzi, udinga ukudlulisa lokhu ngempikiswano ukuya kuskripthi usebenzisa. imali yami. Nge-bash kulula, ungavele uyidlulise ngaphakathi usebenzisa i-agumenti ne-syntax $SYSTEM_ACCESSTOKEN.

Imithetho efanayo ayisebenzi kokuguquguqukayo kwakho; lapha usuvele unesibopho se-syntax. Okuguquguqukayo kungasethwa endaweni emsebenzini ngamunye.

Kusetshenziswa okuguquguqukayo kumapayipi we-Azure DevOps

Noma emhlabeni jikelele esitolo esiguquguqukayo, bese uwaxhuma esitolo. Ngokunethezeka kakhulu.

Kusetshenziswa okuguquguqukayo kumapayipi we-Azure DevOps

Njengebhonasi, uma okuguquguqukayo kuyimfihlo kakhulu, kungagcinwa efwini le-Azure endaweni yokugcina ebizwa nge-Azure Vault; ungaxhuma i-Vault kuphrojekthi ekuLabhulali.

Kusetshenziswa okuguquguqukayo kumapayipi we-Azure DevOps

Ngokuvamile, yonke into icacile ngezinto eziguquguqukayo; kumapayipi asengakwazi ukusethwa mathupha ekuqalisweni ngakunye; ekukhishweni akukho ukusebenza okunjalo. Ungabona ukuthi yini oyidlulisela epayipini futhi kumalogi okuqalisa umenzeli, kodwa khumbula ukuthi asevele ekhona ngendlela eguquliwe.

Kusetshenziswa okuguquguqukayo kumapayipi we-Azure DevOps

Izinguquko Ezinamandla

Ubumnandi buqala lapho sifuna ukwamukela inani elithile esigabeni esisodwa bese silidlulisela kwesinye.

Kusetshenziswa okuguquguqukayo kumapayipi we-Azure DevOps

Asizange sinikezwe ukusebenza okunjalo. Kodwa izandla zethu akuzona ezesithukuthezi futhi ngosizo lwe-Google kwatholakala isisombululo. Siyabonga uNkulunkulu, i-Azure DevOps ine-API esivumela ukuthi senze okungaphezu kwalokho obekuvezwe kusixhumi esibonakalayo.

Ngakho-ke, sizodinga ucingo ukuze sibuyekeze okuguquguqukayo komhlaba wonke, esizokwenza ngokuqondile kusukela ngaphakathi kwepayipi. Ikheli lithathwe ezintweni eziguquguqukayo zemvelo, lawo afanayo elingekho igama ngawo embhalweni, njengoba kushiwo ngaphambili. Ungawasetha wena noma, ngaphezu kwalokho, uwafake nge-hardcode uma evala isitolo.

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

Setha inani elingenalutho lokuguquguquka esifuna ukukudlulisa, setha Ububanzi - Ukukhishwa

Kusetshenziswa okuguquguqukayo kumapayipi we-Azure DevOps

Isibonelo, senza ijeneretha yenani elithile elingahleliwe. Naka i-syntax yokumemezela okuhlukile ngaphakathi kwalesi sigaba; lokhu kusebenza kwethulwa.

Kusetshenziswa okuguquguqukayo kumapayipi we-Azure DevOps

Esinyathelweni esilandelayo, sidlulisela okuguquguqukayo kusikripthi, yebo, yebo, akunakwenzeka ngokuqondile, kufanele kube ngokuphikisana.

Kusetshenziswa okuguquguqukayo kumapayipi we-Azure DevOps

Iskripthi ngaphansi kwe-spoiler

I-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

Noma

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

Kafushane, iskripthi sethu sithatha okuguquguqukayo kwe-myVar njengokufaka futhi sisebenzisa i-API ukubeka inani lalokhu kuguquguquka ku-stageVar. Esinyathelweni esilandelayo, sisebenzisa i-syntax eguquguqukayo yesistimu, singayibheka.

Kusetshenziswa okuguquguqukayo kumapayipi we-Azure DevOps

Isibonelo silula, kepha ukusebenza kusivulela amathuba amahle, ngaphezu kweyami eyedlule izihloko, lapho singakwazi ukudala umshini we-virtual esigabeni sokuqala sokuhlola, senze okunye ukukhohlisa ngawo, nokuningi ngokuhambisana. Futhi isigaba sokugcina siwukucekela phansi. Manje senza ukuhlola okuzenzakalelayo komkhiqizo ngaso sonke isikhathi emishinini emisha ebonakalayo. Uma kubhekwa ukuthi bahlala cishe imizuzu eyi-10, kubiza isenti.

Esihlokweni esilandelayo, uma kunesidingo, ngizokhuluma ngamapayipi e-YAML; sekube nezinto ezintsha eziningi ezithokozisayo lapho muva nje.

Source: www.habr.com

Engeza amazwana