簡體   English   中英

如何使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM