我们尝试使用 Azure Devops Rest API 复制另一个构建定义信息来创建构建定义,但出现以下错误:
HttpError BadRequest - 值不能为空。参数名称:
定义.Repository.Mappings.Mapping.ServerPath。
这是我们正在遵循的步骤
- 使用 API 获取构建信息 - 此步骤运行良好
- 修改构建定义的名称
- 通过传递上述构建定义请求正文来创建新的构建定义
示例代码
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 作为源代码控制。
我们是否遗漏了什么?
在这些场景中,有两种类型的错误,
“定义.Repository.Mappings.Mapping.ServerPath”和“definition.Repository.Mappings.Mapping.LocalPath”。
您的路径中的以下情况将导致上述错误。
定义.Repository.Mappings.Mapping.LocalPath:
- 不允许使用 unc 路径
- 本地映射不允许是绝对路径或导航出 s 目录
- 两个映射不应具有相同的本地路径
- 本地路径号为0或映射号为0
定义.Repository.Mappings.Mapping.ServerPath:
- 不允许出现无效字符
- 服务器路径或类型不允许为空字段
- 两个映射不应具有相同的服务器路径
由于截图没有显示完整的本地路径和服务器路径,请您根据上述规则检查路径。我建议您从页面顶部相应项目的“代码”->“文件”中复制“服务器路径”值,这样可以确保服务器路径是正确的。对于本地路径,我建议您将其一一删除,以确定是哪个路径导致了此问题。
用于克隆构建的 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'
希望能帮助到你。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)