首页 > 解决方案 > 尝试创建 Azure 发布/运行 Azure 发布管道发布返回错误 400

问题描述

我正在尝试使用 REST API 创建一个版本(从我的角度来看启动一个发布管道)。背景是它应该在我们的 Jenkins 系统上运行——我们目前使用旧的 TFS 插件来实现这个功能,但是需要从我们的系统中删除它,这是阻止我们的一件事。我正在尝试直接使用 curl 来调用 API。我最初遇到了身份验证问题(尝试使用“-u 用户名:PAT”,但现在已切换到将 base64(“:PAT”)作为授权标头传递,事情似乎已经继续。

我现在一直收到 400 个错误,据报道这是错误的数据。它似乎是有效的 json,所以我想知道是否缺少某些东西。问题(至少对我而言)是https://docs.microsoft.com/en-us/rest/api/azure/devops/release/releases/create?view=azure-devops-rest-5.0上的文档没有说明正文需要哪些字段以及哪些字段是可选的。我必须假设 descriptionId 是必需的,而其他一些是可选的,但还不是很清楚:)

这本身不是 Jenkins - 我从 bash 手动调用时遇到了同样的错误。我当前的卷曲线看起来像:

curl -X POST -f -H 'Authorization: Basic ${BASE64}' -H 'Content-Type: application/json' -d '{"definitionId":27,"description":"由本地触发","isDraft ":false}' 'https://vsrm.dev.azure.com/${ORGANIZATION}/${PROJECT}/_apis/release/releases?api-version=5.0'

我从特定发布管道的 Web UI 获得的 27(.../release?definitionId=27&view=mine&_a=releases - 我认为这是正确的)。现在一头雾水。有没有办法获得更多有用的错误信息?有人有建议吗?

标签: azure

解决方案


经过一些指导和一些实验,我想我已经做到了这一点。令人困惑的是,错误代码可能与处理有关。因此,例如,如果我尝试使用“1”(而不是“27”)的定义 ID,您会收到 404 错误 - 与无效/未知的 url 无关,与发布的数据有关。

事实证明,这里的实际问题是 artifacts: 字段丢失。这必须同时存在且有效 - 仅添加 "artifacts":[] 是不够的。如前所述,我试图触发一些已设置为与 Jenkins 交谈的东西。通过我的设置,似乎我需要添加:

"artifacts": [{"alias": "_${JOB_BASE_NAME}", "instanceReference": {"id": "${BUILD_NUMBER}", "name": "${BUILD_DISPLAY_NAME}"}}]

不确定这是多么通用(尤其是别名),但到目前为止这似乎对我有用。


推荐阅读