Ho sebelisa mefuta e fapaneng ea liphaephe tsa Azure DevOps

Re tsoela pele ka tlhahlobo ea rona ea sesebelisoa se setle sa nts'etsopele ea Windows le tse ling, Azure DevOps. Lekhetlong lena, kaha ke utloile bohloko haholo ka maemo a fapaneng a tikoloho, ke ile ka etsa qeto ea ho beha phihlelo eohle sehloohong se le seng.

Ho qala ka taba ea hore ba na le li-syntax tse fapaneng bakeng sa tikoloho e 'ngoe le e' ngoe ea ts'ebetso, e qetellang ka ho haelloa ke bokhoni bo tloaelehileng ba ho fetisetsa mefuta e fapaneng ho tloha sethaleng se seng sa pipeline ho ea ho se seng.

Ke tla etsa pehelo ea hore mehlala ea mantlha e tla ba ho Liphaephe tsa Phatlalatso, hobane YAML ha e so fihle moo, mme ke hloka ts'ebetso ea mekhahlelo e mengata le lintho tse ngata tsa khale. Sena, ho bonahala, se se se fumaneha ka li-Pipelines tse tloaelehileng, tse batlang li lekana le tsona ka ts'ebetso. Ho Pipelines YAML, re kentse sesebelisoa se senyenyane sa graphical ho boemeli ba mongolo ka liparamente tse ka hlophisoang. E bonolo haholo; ha ua tlameha ho bala litokomane tsa mojule ka mong. Empa ke tla hlalosa sena sehloohong se latelang, empa hajoale mona ke setšoantšo sa boqapi ka boeona.

Ho sebelisa mefuta e fapaneng ea liphaephe tsa Azure DevOps

Ho boloka le ho sebelisa

Ha re qale ka taba ea hore re na le mefuta e sa feleng ea sistimi. Ba qala, ho latela tšimoloho ea bona, ka mantsoe Release, System, joalo-joalo. Lethathamo le felletseng (joalo ka ha le hlaha, ha le joalo), le fumaneha ho litokomane. schizophrenia eohle e nang le syntax e bontšoa ke mohlala ho tsoa litokomaneng tse ka tlase. Phapang e tšoanang e na le liemeli tse tharo, ho latela hore na re e bitsa hokae.

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)

Haeba u seta phetoho ho moemeli eo mosebetsi o etsoang ho eona, ke $(System.AccessToken). Haeba u batla ho e sebelisa ka har'a mongolo oa powershell ho moemeli ea tšoanang, e tla be e se e le $env:SYSTEM_ACCESSTOKEN. Haeba uena, Molimo a hana, u batla ho sebelisa phetoho ena ho moamoheli ea hole a sebelisa PowerShell mosebetsing oa mochini o shebiloeng, o hloka ho fetisa sena ka khang ho sengoloa o sebelisa. chelete ea ka. Ka bash ho bonolo ho feta, o ka e fetisa ka hare feela o sebelisa khang le syntax $SYSTEM_ACCESSTOKEN.

Melao e tšoanang ha e sebetse ho mefuta ea hau; mona u se u ntse u ikarabella bakeng sa syntax. Liphetoho li ka hlophisoa sebakeng sa heno mosebetsing o mong le o mong.

Ho sebelisa mefuta e fapaneng ea liphaephe tsa Azure DevOps

Kapa lefats'eng ka bophara ho ea lebenkeleng le feto-fetohang, ebe o li hokahanya ho tloha lebenkeleng. Haholo ka boiketlo.

Ho sebelisa mefuta e fapaneng ea liphaephe tsa Azure DevOps

Joalo ka bonase, haeba mefuta e fapaneng e le lekunutu haholo, e ka bolokoa lerung la Azure sebakeng sa polokelo se bitsoang Azure Vault; o ka hokahanya Vault le morero o Laeboraring.

Ho sebelisa mefuta e fapaneng ea liphaephe tsa Azure DevOps

Ka kakaretso, ntho e 'ngoe le e' ngoe e hlakile ka mefuta-futa; liphaepheng li ntse li ka etsoa ka letsoho bakeng sa tlhahiso e 'ngoe le e' ngoe; tokollong ha ho na ts'ebetso e joalo. U ka bona seo u se fetisetsang ho pipeline hape ho li-logs tsa ho qala moemeli, empa hopola hore li se li ntse li le teng ka mokhoa o fetotsoeng.

Ho sebelisa mefuta e fapaneng ea liphaephe tsa Azure DevOps

Liphetoho tse Matla

Monate o qala ha re batla ho fumana boleng bo itseng mothating o mong ebe re o fetisetsa ho o mong.

Ho sebelisa mefuta e fapaneng ea liphaephe tsa Azure DevOps

Ha rea ​​fuoa ts'ebetso e joalo. Empa matsoho a rona ha a na bolutu mme ka thuso ea Google ho ile ha fumanoa tharollo. Ke leboha Molimo, Azure DevOps e na le API e re lumellang ho etsa ho hoholo ho feta se bontšitsoeng sehokelong.

Kahoo, re tla hloka pitso ea ho nchafatsa mefuta e fapaneng ea lefats'e, eo re tla e etsa ka kotloloho ho tsoa ka har'a lipeipi. Aterese e nkiloe ho mefuta e fapaneng ea tikoloho, e tšoanang le eo ho seng lentsoe ka eona litokomaneng, joalokaha ho boletsoe pejana. U ka li ipehela kapa, ho feta moo, li-hardcode haeba li koala lebenkele.

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

Re beha boleng bo se nang letho ba phetoho eo re batlang ho e fetisetsa, beha Scope - Release

Ho sebelisa mefuta e fapaneng ea liphaephe tsa Azure DevOps

Ka mohlala, re etsa jenereithara ea boleng bo sa reroang. Ela hloko syntax ea ho phatlalatsa phetoho ka har'a sethala sena; ts'ebetso ena e ile ea hlahisoa.

Ho sebelisa mefuta e fapaneng ea liphaephe tsa Azure DevOps

Mohato o latelang, re fetisetsa ho feto-fetoha ho script, e, e, ho ke ke ha khoneha ka ho toba, e tlameha ho ba ka khang.

Ho sebelisa mefuta e fapaneng ea liphaephe tsa Azure DevOps

Script tlas'a 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

Kapa

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

Ka bokhuts'oane, sengoloa sa rona se nka myVar e feto-fetohang joalo ka tlhahiso mme se sebelisa API ho beha boleng ba mofuta ona ho stageVar. Mohato o latelang, re sebelisa syntax e fapaneng ea sistimi, re ka e sheba.

Ho sebelisa mefuta e fapaneng ea liphaephe tsa Azure DevOps

Mohlala o bonolo haholo, empa ts'ebetso e re bulela menyetla e metle, ho kenyelletsa le ea ka e fetileng sehloho, ha re ka etsa mochine oa sebele sethaleng sa pele sa teko, re etsa mekhoa e meng ea ho sebetsana le eona, le tse 'maloa ka ho tšoana. Mme kgato ya bofelo ke go e senya. Hona joale re sebelisa li-autotest tsa sehlahisoa nako le nako ka mechini e ncha e fumanehang. Ha ho nahanoa hore ba phela metsotso e ka bang 10, ho bitsa penny.

Sengoliloeng se latelang, ha ho hlokahala, ke tla bua ka liphaephe tsa YAML; ho bile le lintlafatso tse ngata tse khahlisang moo morao tjena.

Source: www.habr.com

Eketsa ka tlhaloso