当前位置: 首页 > 知识库问答 >
问题:

“指定的值不能转换为ReleaseStartMetadata类型。”触发器VSTS使用powershell发布API时显示的消息

谭奕
2023-03-14

我试图使用powershell调用VSTS发布API,但下面显示了错误消息。当我在postman中运行api时,它工作得很好。

Invoke-RestMethod:{“$Id”:“1”,“innerexception”:null,“message”:“VS402903:指定的值不能转换为ReleaseStartMetadata类型。请确保它可以转换为ReleaseStartMetadata类型,然后再试一次。”,“typeName”:“Microsoft.VisualStudio.Services.ReleaseManagement.data.exceptions.InvalidRequestException,Microsoft.VisualStudio.Services.ReleaseManagement2.data”,“typeKey”:“char:11+$result=Invoke-RestMethod-uri$uri-method post-body$params-hea...stsrelease.ps1:40 char:6+throw“无法定位发行版定义Id$($DefinitionID)”

Powershell代码

Param(
   [string]$vstsAccount = "demo",
   [string]$projectName = "Enterprise",
   [string]$definitionId = "860",
   [string]$keepForever = "true",
   [string]$personalAccessToken  = "asdfasdf"
)

# Base64-encodes the Personal Access Token (PAT) appropriately
$headers = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($personalAccessToken)")) }

# Construct the REST URL
$uri = "https://$vstsAccount.vsrm.visualstudio.com/$projectName/_apis/release/releases?api-version=5.0-preview.3"

Write-Host "Uri :" $uri

$params = 
'[
{
    "definitionId": 860,
    "description": "Create Release from postman.",
    "artifacts": [],
    "isDraft": false,
    "reason": "Demo purpose",
    "manualEnvironments": null,
    "environmentsMetadata": null, 
    "properties": null, 
    "variables": null
}
]'

Write-Host " Json Body :" $params

# Invoke the REST call and capture the results
$result = Invoke-RestMethod -Uri $uri -Method POST -Body $params -Headers $headers -ContentType "application/json" -Verbose -Debug

# This call should only provide a single result; Capture the Build ID from the result
if ($result.count -eq 0)
{
     throw "Unable to locate Release Definition Id $($definitionId)"
}
else
{
    Write-host "Success!!!"
}

邮递员要求:

{
    "definitionId": 860,
    "description": "Create Release from postman.",
    "artifacts": [],
    "isDraft": false,
    "reason": "Demo purpose",
    "manualEnvironments": null
}

共有1个答案

暨高洁
2023-03-14

您将注意到文档中定义的主体与ReleaseStartMetadata相同。尝试指定powershell$params变量中缺少的属性

$params='[{“definitionid”:860,“description”:“from PowerShell.”,“artifacts”:[],“isdraft”:false,“reason”:“demo purpose”,“manualenvironments”:null,“environmentsmetadata”:null,“properties”:null,“variables”:null}]'

 类似资料:
  • 我正在尝试设置CI / CD,但没有太多的运气。我的目标是通过 构建一个 .net 网络项目,并将其部署到 应用程序。 我现在在哪里? 创建了< code>vsts-ci.yml文件,如下所示: 我有一个构建定义,如下所示: 有了这个,我的第一步运行正确。顺便说一下代理池是。 然后,我创建了一个如下发布管道: 作为第1阶段的任务(在工件步骤之后运行的部分),我有以下内容: 我已经将构建与主分支提交

  • 问题内容: 我花了2天的时间找到问题的解决方案。 这是错误: 这是JSON: 用于获取字符串值的类: 这是转换为JSONArray: 我试图获取Json对象,然后将其转换为Json数组,但收到相同的错误。 问题答案: 问题是您的JSON格式不正确。我已经尝试过使用示例JSON,并找到了解决方案。现在,内置的JSONObject和JSONArray无法用于获取此类JSON响应。 您需要通过将其添加到

  • 我有一个JSON文件,其中有2个JSON-Arrays:一个数组用于路由,一个数组用于视图。 一条路线应该由用户导航到的几个景点组成。不幸的是,我得到了一个错误: JSONException:java.lang.String类型的值不能转换为JSONObject 下面是我的变量和解析JSON文件的代码: 但错误发生在这里: 04-22 14:01:05.043:E/JSON解析器(5868):解析

  • 什么是最方便的方法来影响消息转换器的优先级Spring应用时发布与? 用例:我想确保给定的实体被发布为JSON,而不是例如。XML当我做。 违约 选项1 您可以显式地为给定的实例配置消息转换器,如。如果实例是共享的(例如作为Spring bean),这是不方便的,因为您可能需要在一个情况下使用转换器X,在不同的情况下使用转换器Y。 选择2 您可以显式地设置和HTTP头,在这种情况下,Spring将

  • 我知道这是另一个类似的问题,但我自己无法回答,这就是我写信给你寻求帮助的原因。 我尝试创建自己的@Query,并在两种情况下返回一个转换错误。我的猜测是服务有问题,但这是我的知识结束。 下面是我的代码: > 主实体 2.第二种模式 3.第三种模式 存储库 @Repository public interface UserRepository extends jparepository { } 服务