如何使用Azure DevOps REST API设置发布定义工件

问题描述 投票:0回答:1

我正在尝试为发布定义之一设置一长串工件。首先,我只添加一个工件。但是,即使这样也不会更新。以下是我到目前为止所做的事情。我究竟做错了什么?

$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)
}
powershell azure-pipelines-release-pipeline azure-devops-rest-api
1个回答
0
投票

您是否替换了脚本中的revision参数?要更新版本定义,您需要设置一个新的revision来替换旧版本,否则您将收到以下提示:You are using an old copy of the release pipeline. Refresh your copy and try again.这将导致更新失败。

enter image description here

[在脚本中,您使用get方法获取发布定义的响应正文,但是revision未更新,仅修改了artifacts部分。

我在Postman中测试过,可以很好地工作:

enter image description here

样品请求正文:

{
    "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": "[email protected]",
        "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": "[email protected]",
        "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"
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.