![](/img/trans.png)
[英]Error while trying to create a release definition using Azure DevOps Rest API
[英]How to set Release Definition artifacts using Azure DevOps REST API
我正在嘗試為其中一個發布定義設置一長串工件。 首先,我只添加一個工件。 但是,即使這樣也不會更新。 以下是我到目前為止所做的。 我究竟做錯了什么?
$patUser = 'patUser'
$patToken = 'patToken'
$base64AuthInfo = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $($patUser), $($patToken))))
$header = @{Authorization=("Basic {0}" -f $base64AuthInfo)}
$relDefsUrl = 'https://vsrm.dev.azure.com/myOrg/myProj/_apis/release/definitions?api-version=5.1'
try {
$result = Invoke-RestMethod -Uri $relDefsUrl -Method Get -ContentType "application/json" -Headers $header
$relDefs = $result.value
if ($relDefs.count -gt 0) {
$relDefs | ForEach-Object {
if ($_.name -eq 'ThisReleaseDefinition') {
$url = $_.url + '?api-version=5.1'
$relDefExpanded = Invoke-RestMethod -Uri $url -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
$sourceId = "1234:1234"
$type = "Build"
$alias = "_thisCIBuild"
$defRef = ""
$isRetained = $false
$artifacts = @{
sourceId = $sourceId
type = $type
alias = $alias
definitionReference = $defRef
isRetained = $isRetained
}
$relDefExpanded.artifacts = $artifacts
$body = $relDefExpanded | ConvertTo-Json -Depth 100
$body = [System.Text.Encoding]::UTF8.GetBytes($body)
$updateResult = Invoke-RestMethod $url -Method Put -ContentType "application/json" -body $body -Headers $header
Write-Host "The value of 'artifacts' is updated to" $updateResult.artifacts
}
}
}
else {
throw ("Cannot continue because there is zero release definition.")
}
}
catch {
throw ("Failed to call ADO REST API: " + $_.Exception.Message)
}
您是否替換了腳本中的revision
參數? 要更新發布定義,您需要將當前revision
設置為替換舊版本,否則您將收到以下提示: You are using an old copy of the release pipeline. Refresh your copy and try again.
You are using an old copy of the release pipeline. Refresh your copy and try again.
這將導致更新失敗。
在您的腳本中,您使用get
方法獲取發布定義的響應正文,但不會更新revision
,僅修改artifacts
部分。
我在Postman中測試過,可以正常工作:
示例請求正文:
{
"source": "userInterface",
"revision": 46,
"description": null,
"createdBy": {
"displayName": "hughl01",
"url": "https://spsprodea1.vssps.visualstudio.com/xxx-8b1e-4b09-aaf7-291/_apis/Identities/xxx-a332-64e5-aea9",
"_links": {
"avatar": {
"href": "https://dev.azure.com/{org}/_apis/GraphProfile/MemberAvatars/msa.OWY3MjMwMTMtYTMzMi03NGU1LWFlYTktNmUzZW"
}
},
"id": "9f723013-a332-64e5-aea9-xxf9d353",
"uniqueName": "xx@hotmail.com",
"imageUrl": "https://dev.azure.com/{org}/_apis/GraphProfile/MemberAvatars/msa.OWY3MjMwMTMtYTMzMi03NGU1L",
"descriptor": "msa.OWY3MjMwMTMtY"
},
"createdOn": "2019-10-29T03:11:22.673Z",
"modifiedBy": {
"displayName": "hughl01",
"url": "https://spsprodea1.vssps.visualstudio.com/Ac36xx7c99faca4/_apis/Identities/9f723013-a332-64e5-aea9-6e3",
"_links": {
"avatar": {
"href": "https://dev.azure.com/{org}/_apis/GraphProfile/MemberAvatars/msa.OWY3MjMwMTMtYTMzMi03NGU1LWFlYTk"
}
},
"id": "9f723013-a332-64e5",
"uniqueName": "xx@hotmail.com",
"imageUrl": "https://dev.azure.com/{org}/_apis/GraphProfile/MemberAvatars/msa.OWY3MjMwMTMtYT",
"descriptor": "msa.OWY3MjMwMTMtYTMzMi03NGU1LWFlYTk"
},
"modifiedOn": "2020-04-21T06:04:04.877Z",
"isDeleted": false,
"variables": {
"test": {
"value": "true"
}
},
"variableGroups": [],
"environments": [
{
"id": 5,
"name": "Stage 1",
"rank": 1,
"owner": {
"displayName": "hughl01",
......
],
"artifacts": [
{
"sourceId": "59b994e8-4a77-46a1-8b5d-6a25f10-9df2-4cc7-9f2f-944cf7280d1c",
"type": "Git",
"alias": "_111",
"definitionReference": {
"branches": {
"id": "master",
"name": "master"
},
"checkoutNestedSubmodules": {
"id": "True",
"name": "Any nested submodules within"
},
"checkoutSubmodules": {
"id": "",
"name": ""
},
"defaultVersionSpecific": {
"id": "",
"name": ""
},
"defaultVersionType": {
"id": "latestFromBranchType",
"name": "Latest from the default branch"
},
"definition": {
"id": "46f31875-9df2-4cc7-9f2f-9441c",
"name": "111"
},
"fetchDepth": {
"id": "",
"name": ""
},
"gitLfsSupport": {
"id": "",
"name": ""
},
"project": {
"id": "59b994e8-4a77-46a1-8b5d-6a26",
"name": "xx"
}
},
"isRetained": false
},
{
"sourceId": "59b994e8-4a77-46a1-8b5d-6a24b6:30",
"type": "Build",
"alias": "_dev02",
"definitionReference": {
"artifactSourceDefinitionUrl": {
"id": "https://dev.azure.com/{org}/_permalink/_build/index?collectionId=0933e8b2-f504-4b7e-9ea59&projectId=59b994e8-4a77-4a1-8b5d-6a4b6&definitionId=30",
"name": ""
},
"defaultVersionBranch": {
"id": "",
"name": ""
},
"defaultVersionSpecific": {
"id": "2279",
"name": "2279"
},
"defaultVersionTags": {
"id": "",
"name": ""
},
"defaultVersionType": {
"id": "specificVersionType",
"name": "Specific version"
},
"definition": {
"id": "30",
"name": "dev02"
},
"definitions": {
"id": "",
"name": ""
},
"IsMultiDefinitionType": {
"id": "False",
"name": "False"
},
"project": {
"id": "59b994e8-4a77-4xxx10d24b6",
"name": "xx"
},
"repository": {
"id": "",
"name": ""
}
},
"isPrimary": true,
"isRetained": false
},
{
"type": "Build",
"alias": "_UnitTest",
"definitionReference": {
"defaultVersionType": {
"id": "latestType",
"name": "Latest"
},
"definition": {
"id": "27",
"name": "UnitTest"
},
"project": {
"id": "59b994e8-4a77xxx25f10d24b6",
"name": "xx"
}
},
"isPrimary": false,
"isRetained": false
}
],
"triggers": [],
"releaseNameFormat": "Release-$(rev:r)",
"tags": [],
"properties": {
"DefinitionCreationSource": {
"$type": "System.String",
"$value": "ReleaseNew"
},
"IntegrateBoardsWorkItems": {
"$type": "System.String",
"$value": "True"
},
"IntegrateJiraWorkItems": {
"$type": "System.String",
"$value": "false"
}
},
"id": 2,
"name": "New release pipeline (1)",
"path": "\\",
"projectReference": null,
"url": "https://vsrm.dev.azure.com/{org}/59b994e8-4a7xxd-6a25xx/_apis/Release/definitions/2",
"_links": {
"self": {
"href": "https://vsrm.dev.azure.com/{org}/59b994e8-4xx1-xx0d24b6/_apis/Release/definitions/2"
},
"web": {
"href": "https://dev.azure.com/{org}/59b994e8-xx5f10d24b6/_release?definitionId=2"
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.