Kutumia vigezo katika mabomba ya Azure DevOps

Tunaendelea na ukaguzi wetu wa zana nzuri ya ukuzaji wa Windows na zaidi, Azure DevOps. Wakati huu, baada ya kuteseka sana na vigezo vya mazingira, niliamua kuweka uzoefu wote katika makala moja.

Kuanzia na ukweli kwamba wana syntax tofauti kwa kila mazingira ya utekelezaji, na kuishia na ukosefu wa uwezo wa kawaida wa kuhamisha vigezo kutoka hatua moja ya bomba hadi nyingine.

Nitahifadhi kuwa mifano kuu itakuwa kwenye Mabomba ya Kutoa, kwa sababu YAML bado haijafika huko, na ninahitaji utendakazi wa hatua nyingi na vizalia vingi. Hii, inaonekana, imepatikana katika Mabomba ya kawaida, ambayo yanalingana nao katika utendaji. Katika Pipelines YAML, tuliongeza kidokezo kidogo cha picha kwa uwakilishi wa maandishi na vigezo vinavyoweza kuwekwa. Ni rahisi sana; sio lazima upitie hati kwa kila moduli. Lakini nitaelezea hili katika makala inayofuata, lakini kwa sasa hapa kuna picha ya uvumbuzi yenyewe.

Kutumia vigezo katika mabomba ya Azure DevOps

Uhifadhi na matumizi

Hebu tuanze na ukweli kwamba tuna vigezo vya msingi katika mfumo. Wanaanza, kulingana na asili yao, na maneno Release, System, nk. Orodha kamili (kama inavyogeuka, sio), inapatikana kwa nyaraka. skizofrenia yote iliyo na sintaksia inaonyeshwa kwa mfano kutoka kwa hati hapa chini. Tofauti sawa ina uwakilishi tatu, kulingana na wapi tunaita.

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)

Ukiweka kigezo kwa wakala ambapo kazi inatekelezwa, ni $(System.AccessToken). Ikiwa unataka kuitumia ndani ya hati ya powershell kwenye wakala sawa, itakuwa tayari $env:SYSTEM_ACCESSTOKEN. Ikiwa wewe, Mungu apishe mbali, unataka kutumia utaftaji huu kwenye seva pangishi ya mbali kwa kutumia PowerShell kwenye kazi ya mashine lengwa, unahitaji kupitisha hii kupitia hoja kwa hati kwa kutumia. pesa yangu. Ukiwa na bash ni rahisi zaidi, unaweza kuipitisha tu ndani kwa kutumia hoja na syntax $SYSTEM_ACCESSTOKEN.

Sheria zile zile hazitumiki kwa anuwai zako mwenyewe; hapa tayari unawajibika kwa syntax. Vigezo vinaweza kuwekwa ndani ya kila kazi.

Kutumia vigezo katika mabomba ya Azure DevOps

Au kimataifa kwa duka la kubadilika, na kisha uziunganishe kutoka kwa duka. Raha sana.

Kutumia vigezo katika mabomba ya Azure DevOps

Kama bonasi, ikiwa anuwai ni siri sana, zinaweza kuhifadhiwa kwenye wingu la Azure kwenye hifadhi inayoitwa Azure Vault; unaweza kuunganisha Vault kwenye mradi kwenye Maktaba.

Kutumia vigezo katika mabomba ya Azure DevOps

Kwa ujumla, kila kitu kiko wazi na vigeu; katika bomba bado zinaweza kusanidiwa kwa kila uzinduzi; katika toleo hakuna utendakazi kama huo. Unaweza kuona kile unachohamisha kwenye bomba tena kwenye kumbukumbu za uanzishaji wa wakala, lakini kumbuka kuwa tayari ziko katika fomu iliyogeuzwa.

Kutumia vigezo katika mabomba ya Azure DevOps

Vigeu Vinavyobadilika

Burudani huanza tunapotaka kupokea thamani fulani katika hatua moja na kuipitisha hadi nyingine.

Kutumia vigezo katika mabomba ya Azure DevOps

Hatukupewa utendakazi kama huu. Lakini mikono yetu sio ya kuchoka na kwa msaada wa Google suluhisho lilipatikana. Asante Mungu, Azure DevOps ina API inayoturuhusu kufanya zaidi ya yale yaliyoonyeshwa kwenye kiolesura.

Kwa hivyo, tutahitaji wito kusasisha vigeu vya kimataifa, ambavyo tutafanya moja kwa moja kutoka ndani ya bomba. Anwani inachukuliwa kutoka kwa anuwai za mazingira, zile zile ambazo hakuna neno juu ya hati, kama ilivyotajwa hapo awali. Unaweza kuziweka mwenyewe au, zaidi ya hayo, kuziweka ngumu ikiwa watafunga duka.

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

Tunaweka thamani tupu ya kutofautiana ambayo tunataka kuhamisha, kuweka Wigo - Kutolewa

Kutumia vigezo katika mabomba ya Azure DevOps

Kwa mfano, tunatengeneza jenereta ya thamani isiyo ya kawaida. Zingatia sintaksia ya kutangaza tofauti ndani ya hatua hii; utendakazi huu ulianzishwa.

Kutumia vigezo katika mabomba ya Azure DevOps

Katika hatua inayofuata, tunapitisha kutofautiana kwa script, ndiyo, ndiyo, haiwezekani moja kwa moja, lazima iwe kupitia hoja.

Kutumia vigezo katika mabomba ya Azure DevOps

Hati chini ya 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

Au

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

Kwa kifupi, hati yetu inachukua myVar kutofautisha kama ingizo na hutumia API kuweka thamani ya utaftaji huu kwenye stageVar. Katika hatua inayofuata, kwa kutumia syntax ya kutofautiana ya mfumo, tunaweza kuiangalia.

Kutumia vigezo katika mabomba ya Azure DevOps

Mfano ni rahisi sana, lakini utendaji unafungua fursa nzuri kwa ajili yetu, pamoja na uliopita makala, tunapoweza kuunda mashine pepe katika hatua ya kwanza ya majaribio, fanya upotoshaji zaidi nayo, na kadhaa kwa sambamba. Na hatua ya mwisho ni kuiharibu. Sasa tunafanya majaribio ya kiotomatiki ya bidhaa kila wakati kwenye mashine mpya pepe. Kwa kuzingatia kwamba wanaishi kwa muda wa dakika 10, inagharimu senti.

Katika makala inayofuata, ikiwa ni lazima, nitazungumza kuhusu mabomba ya YAML; kumekuwa na ubunifu mwingi wa kuvutia hapo hivi majuzi.

Chanzo: mapenzi.com

Kuongeza maoni