我正在尝试使用API更新现有版本的发布范围变量。
问题:接收API调用中的异常(PUT https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}?api-version=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}重建步骤:
GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}?api-version=5.1-preview.8获取发布详细信息"allowOverride"设置为true的发布作用域变量的值从步骤2更新响应PUT https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}?api-version=5.1-preview.8并提供步骤2-5中生成的json更新发布。我已经更新了2个发布属性(modifiedOn和definitionSnapshotRevision),因为我看到如果使用web站点(https://vsrm.dev.azure.com)更新版本,这些值会发生变化。看来我还漏了什么东西。在有关如何正确更新发布部署的文档中,我找不到任何指导。
发布于 2019-03-09 00:38:56
我使用“Invoke RestMethod”powershell命令获取发布元数据。这个命令返回自定义的ps对象,然后我更新它,使用“ConvertTo”命令将其转换为json,并在PUT HTTP请求正文中提供给DevOps以更新发行版。问题是,Powershell序列化/反序列化过程不会导致原来的json。例如,这个json属性:
"preDeploymentGatesSnapshot": {
"id": 0,
"gatesOptions": null,
"gates": []
},变成:
"preDeploymentGatesSnapshot": "@{id=0; gatesOptions=; gates=System.Object[]}"在API调用中的PUT请求正文中使用正确的json之后:
https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}?api-version=5.1-preview.8
发行版已成功更新。
https://stackoverflow.com/questions/54755547
复制相似问题