Ke hoʻohana nei i nā mea hoʻololi i nā pipelines Azure DevOps

Ke hoʻomau nei mākou i kā mākou loiloi i kahi mea hana kupanaha no ka hoʻomohala ʻana no Windows a ʻoi aku, ʻo Azure DevOps. I kēia manawa, me ka loaʻa ʻana o ka pilikia me nā ʻano hoʻololi kaiapuni, ua hoʻoholo wau e kau i nā ʻike āpau i hoʻokahi ʻatikala.

E hoʻomaka ana mai ka ʻoiaʻiʻo he ʻokoʻa kā lākou syntax no kēlā me kēia wahi hoʻokō, e hoʻopau ana me ka nele o ka hiki ke hoʻololi i nā mea hoʻololi mai kahi pae o ka pipeline i kekahi.

E hoʻopaʻa wau i nā hiʻohiʻona nui ma Release Pipelines, no ka mea ʻaʻole i hiki ʻo YAML i laila, a pono wau i ka hana o nā pae he nui a me nā mea hana he nui. Me he mea lā, ua loaʻa kēia i nā Pipelines maʻamau, e like me lākou i ka hana. Ma Pipelines YAML, ua hoʻohui mākou i kahi mea hana kiʻi liʻiliʻi i ka hōʻike kikokikona me nā ʻāpana hiki ke hoʻonohonoho. He maʻalahi loa ia; ʻaʻole pono ʻoe e hele i nā palapala no kēlā me kēia module. Akā e wehewehe wau i kēia ma ka ʻatikala aʻe, akā i kēia manawa eia kahi kiʻi o ka mea hou.

Ke hoʻohana nei i nā mea hoʻololi i nā pipelines Azure DevOps

Waiho a hoʻohana

E hoʻomaka kākou me ka loaʻa ʻana o nā mea hoʻololi paʻamau i ka ʻōnaehana. Hoʻomaka lākou, ma muli o ko lākou kumu, me nā huaʻōlelo Release, System, etc. Loaʻa ka papa inoa piha (e like me ka mea i ʻike ʻia, ʻaʻole). palapala. Hōʻike ʻia ka schizophrenia āpau me ka syntax e kekahi laʻana mai ka palapala ma lalo nei. ʻEkolu mau hiʻohiʻona ka hoʻololi like, ma muli o kahi a mākou e kapa ai.

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)

Inā hoʻonoho ʻoe i kahi mea hoʻololi i ka luna kahi i hoʻokō ʻia ai ka hana, ʻo ia ka $(System.AccessToken). Inā makemake ʻoe e hoʻohana iā ia i loko o kahi palapala powershell ma ka ʻelele hoʻokahi, e lilo ia i $ env:SYSTEM_ACCESSTOKEN. Inā ʻaʻole ʻoe, makemake ʻoe e hoʻohana i kēia ʻano hoʻololi ma kekahi mea mamao me ka hoʻohana ʻana i ka PowerShell ma ka hana mīkini i hoʻopaʻa ʻia, pono ʻoe e hāʻawi i kēia ma kahi hoʻopaʻapaʻa i ka palapala me ka hoʻohana ʻana. kaʻu kālā. Me ka bash he mea maʻalahi, hiki iā ʻoe ke hoʻolilo iā ia i loko me ka hoʻohana ʻana i ka hoʻopaʻapaʻa a me ka syntax $SYSTEM_ACCESSTOKEN.

ʻAʻole pili nā kānāwai like i kāu mau hoʻololi ponoʻī; eia ʻoe ke kuleana no ka syntax. Hiki ke hoʻonohonoho ʻia nā ʻano like ʻole ma kēlā me kēia hana.

Ke hoʻohana nei i nā mea hoʻololi i nā pipelines Azure DevOps

A i ʻole ma ka honua holoʻokoʻa i ka hale kūʻai loli, a laila e hoʻopili iā lākou mai ka hale kūʻai. ʻoluʻolu loa.

Ke hoʻohana nei i nā mea hoʻololi i nā pipelines Azure DevOps

Ma ke ʻano he bonus, inā he mea huna loa nā mea hoʻololi, hiki ke mālama ʻia i ke ao Azure i kahi waihona i kapa ʻia ʻo Azure Vault; hiki iā ʻoe ke hoʻopili iā Vault i ka papahana ma ka Hale Waihona Puke.

Ke hoʻohana nei i nā mea hoʻololi i nā pipelines Azure DevOps

Ma keʻano laulā, maopopo nā mea āpau me nā loli; ma nā pipeline hiki ke hoʻonohonoho lima ʻia no kēlā me kēia hoʻolaha; i ka hoʻokuʻu ʻana ʻaʻohe hana like. Hiki iā ʻoe ke ʻike i kāu mea e hoʻololi hou ai i ka pipeline i loko o nā logs initialization agent, akā e hoʻomanaʻo ʻoe aia lākou i laila ma ke ʻano hoʻololi.

Ke hoʻohana nei i nā mea hoʻololi i nā pipelines Azure DevOps

Nā mea hoʻololi hoʻoikaika kino

Hoʻomaka ka leʻaleʻa ke makemake mākou e loaʻa i kahi waiwai ma kahi pae a hāʻawi i kahi aʻe.

Ke hoʻohana nei i nā mea hoʻololi i nā pipelines Azure DevOps

ʻAʻole mākou i hāʻawi ʻia me ia ʻano hana. Akā ʻaʻole ko mākou mau lima no ka luhi a me ke kōkua o Google ua loaʻa kahi hopena. Mahalo i ke Akua, loaʻa iā Azure DevOps kahi API e hiki ai iā mākou ke hana i kahi mea liʻiliʻi ma mua o ka mea i hōʻike ʻia ma ka interface.

No laila, pono mākou i kahi kelepona e hoʻonui i nā ʻano hoʻololi honua, e hana pololei mākou mai loko mai o ka pipeline. Lawe ʻia ka helu wahi mai nā ʻano hoʻololi kaiapuni, nā mea like ʻole kahi huaʻōlelo e pili ana i ka palapala, e like me ka mea i ʻōlelo ʻia ma mua. Hiki iā ʻoe ke hoʻonohonoho iā ʻoe iho a i ʻole, ʻoi aku ka paʻakikī iā lākou inā pani lākou i ka hale kūʻai.

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

Hoʻonoho mākou i ka waiwai ʻole o ka mea hoʻololi a mākou e makemake ai e hoʻololi, hoʻonohonoho i ka Scope - Release

Ke hoʻohana nei i nā mea hoʻololi i nā pipelines Azure DevOps

No ka laʻana, hana mākou i kekahi mea hoʻoheheʻe waiwai. E noʻonoʻo i ka syntax o ka haʻi ʻana i kahi loli i loko o kēia pae; ua hoʻokomo ʻia kēia hana.

Ke hoʻohana nei i nā mea hoʻololi i nā pipelines Azure DevOps

I ka pae aʻe, hāʻawi mākou i ka loli i ka palapala, ʻae, ʻae, ʻaʻole hiki pololei, pono ma o ka hoʻopaʻapaʻa.

Ke hoʻohana nei i nā mea hoʻololi i nā pipelines Azure DevOps

Kākau ma lalo o ka 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

ʻO

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

Ma kahi pōkole, lawe kā mākou palapala i ka myVar hoʻololi i mea hoʻokomo a hoʻohana i ka API e hoʻokomo i ka waiwai o kēia hoʻololi i stageVar. I ka pae aʻe, me ka hoʻohana ʻana i ka syntax variable system, hiki iā mākou ke nānā iā ia.

Ke hoʻohana nei i nā mea hoʻololi i nā pipelines Azure DevOps

He mea maʻalahi ka hiʻohiʻona, akā ua wehe ka hana i nā manawa kūpono no mākou, ma kahi o kaʻu mua ʻatikala, i ka wā e hiki ai iā mākou ke hana i kahi mīkini virtual i ka pae mua o ka hoʻāʻo ʻana, e hana i kekahi mau manipulations hou me ia, a me nā mea like ʻole. A ʻo ka pae hope loa ka luku ʻana. I kēia manawa, holo mākou i nā autotests o ka huahana i kēlā me kēia manawa ma nā mīkini virtual hou. Ke noʻonoʻo nei lākou e ola ana ma kahi o 10 mau minuke, he peni ke kumukūʻai.

I ka ʻatikala aʻe, inā pono, e kamaʻilio wau e pili ana i nā pipelines YAML; ua nui nā mea hoihoi hou ma laila i kēia mau lā.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka