Azure devops Azure DevOps:如何使用REST API更新发布范围的变量

Azure devops Azure DevOps:如何使用REST API更新发布范围的变量,azure-devops,azure-pipelines-release-pipeline,azure-devops-rest-api,Azure Devops,Azure Pipelines Release Pipeline,Azure Devops Rest Api,我正在尝试使用API更新现有版本的版本范围变量 问题:收到API调用异常(PUT{organization}/{project}/_API/release/releaseId}?API版本=5.1-preview.8) 重新创建的步骤: 从现有版本定义创建版本,而不触发web门户上的任何阶段: 通过调用以下命令获取发布详细信息: GEThttps://vsrm.dev.azure.com/{organization}/{project}/_api/release/release/{release

我正在尝试使用API更新现有版本的版本范围变量

问题:收到API调用异常(PUT{organization}/{project}/_API/release/releaseId}?API版本=5.1-preview.8)

重新创建的步骤:

  • 从现有版本定义创建版本,而不触发web门户上的任何阶段:
  • 通过调用以下命令获取发布详细信息:
    GEThttps://vsrm.dev.azure.com/{organization}/{project}/_api/release/release/{releaseId}?api版本=5.1-preview.8
  • 将步骤2中的响应更新为释放范围变量的值,并将
    “allowOverride”
    设置为true
  • 更新步骤2中的响应,将“modifiedOn”属性设置为晚于现有值的日期
  • 更新步骤2中的响应,将“definitionSnapshotRevision”属性设置为增加1的现有值
  • 通过调用以下命令更新版本:
    PUThttps://vsrm.dev.azure.com/{organization}/{project}/_api/release/release/{releaseId}?api版本=5.1-preview.8
    并提供步骤2-5中生成的json
  • 遵守上述例外情况
  • 我已经更新了2个版本属性(modifiedOn和definitionSnapshotRevision),因为我看到如果我使用网站()更新一个版本,这些值会发生变化。看来我还是错过了什么。我在文档中找不到关于如何正确更新发布部署的任何指导

    我使用“Invoke RestMethod”powershell commandlet获取发布元数据。这个commandlet返回定制的ps对象,我随后更新了该对象,使用“converttojson”commandlet将其转换为json,并在提交给DevOps的PUT-HTTP请求的主体中提供,以更新版本。问题在于,json的Powershell序列化/反序列化过程不会产生原始json。 例如,此json属性:

    "preDeploymentGatesSnapshot": {
        "id": 0,
        "gatesOptions": null,
        "gates": []
    },
    
    变成:

    "preDeploymentGatesSnapshot": "@{id=0; gatesOptions=; gates=System.Object[]}"
    
    在API调用的PUT请求主体中使用正确的json后:

    {organization}/{project}/_api/release/release/{releaseId}?api版本=5.1-preview.8

    Invoke-RestMethod : {"$id":"1","innerException":null,"message":"You are using an old copy of release. Refresh your copy and try
    again.","typeName":"Microsoft.VisualStudio.Services.ReleaseManagement.Data.Exceptions.InvalidRequestException,
    Microsoft.VisualStudio.Services.ReleaseManagement2.Data","typeKey":"InvalidRequestException","errorCode":0,"eventId":3000}
    
    该版本已成功更新