使用Azure Devops API创建构建定义

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

我们尝试使用Azure Devops Rest API复制另一个构建定义信息来创建构建定义,但是得到以下错误:

HttpError BadRequest - 值不能为null。参数名称:definition.Repository.Mappings.Mapping.ServerPath。

以下是我们遵循的步骤

  1. 使用API​​获取构建信息 - 此步骤正常工作
  2. 修改构建定义的名称
  3. 通过传递上面的构建定义请求Body来创建新的构建定义

示例代码

var buildDefinitionGet = client.GetBuildDefinitionsAsync("XXX.DevOps", "15");

var newBuildDefinition = buildDefinitionGet;
newBuildDefinition.name = "MVC2017-1";

var buildDefinition = await client               
   .CreateBuildDefinitionsAsync("XXX.DevOps", newBuildDefinition)
   .ConfigureAwait(false);

这是请求体结构:

public class BuildDefinitionRequestBody
{
    public Process process { get; set; }
    public Repository repository { get; set; }
    public ProcessParameters processParameters { get; set; }
    public List<object> drafts { get; set; }
    public Queue queue { get; set; }
    public string name { get; set; }
    public string type { get; set; }
    public string queueStatus { get; set; }
}

我们使用TFVC作为源控件。

我们错过了什么吗?

c# azure-devops azure-devops-rest-api
1个回答
0
投票

在这些情况下,有两种类型错误,

“definition.Repository.Mappings.Mapping.ServerPath”和“definition.Repository.Mappings.Mapping.LocalPath”。

您的路径中的以下情况将导致上述错误。

definition.Repository.Mappings.Mapping.LocalPath:


  1. 不允许使用unc路径
  2. 本地映射不允许是绝对路径或导航出s目录
  3. 两个映射不应该具有相同的本地路径
  4. 本地路径编号为0或映射编号为0

definition.Repository.Mappings.Mapping.ServerPath:


  1. 不允许使用无效字符
  2. 服务器路径或类型不允许空字段
  3. 两个映射不应该具有相同的服务器路径

由于屏幕截图没有显示整个本地路径和服务器路径,请根据您的方面检查路径。我建议您从页面顶部的相应项目的代码 - >文件中复制服务器路径值,这可以确保服务器路径正确。对于本地路径,我建议您逐个删除,以确保哪一个导致此问题。

用于克隆构建的Powershell等效代码。

$uri = 'https://dev.azure.com/{organization}/{project}/_apis/build/definitions/{definitionId}'

$result = Invoke-RestMethod -Method Get -Uri $uri -UseDefaultCredentials
$result.path = '\NewFolder\Location'
$result.name = "Testing"

$body = $result | ConvertTo-Json -Depth 7

Invoke-RestMethod -Method POST -uri 'https://dev.azure.com/{organization}/{project}/_apis/build/definitions?api-version=4.0' -UseDefaultCredentials -Body $body -ContentType 'application/json'

希望能帮助到你。

© www.soinside.com 2019 - 2024. All rights reserved.