如何使用 Azure DevOps REST API 获取 azure devops 发布管道部署日志?

How to get azure devops release pipeline deployment logs using Azure DevOps REST API?

我遇到了两个 REST API,但不确定是否会获取部署日志。

GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}/logs?api-version=5.1-preview.2

GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}/environments/{environmentId}/deployPhases/{releaseDeployPhaseId}/tasks/{taskId}/logs?api-version=5.1-preview.2
  1. 我尝试了第一个 REST API。它正在以 transfer-encoded 格式的形式检索数据。 NodeJS中如何获取正文中的真实数据?
  2. 为了检查第二个 REST API,我没有 releaseDeployPhaseIdtaskId 的值。我没有在 Azure DevOps 发布管道门户中获得这些信息。

谁能帮我解决这个问题?提前致谢!

您可以在以下 API 中获取 releaseDeployPhaseIdtaskId 值:

GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}/environments/{environmentId}?api-version=5.1-preview.2

根据测试结果,目前只能通过第二种API获取明文发布日志。

根据Shayki提供的api可以得到deployPhaseIdtaskIddeployPhaseId是stage中的agent job id。第二个rest的缺点api是无法获取完整的release log,只能获取一个task的log

如果您没有通过其余 api 获得发布日志,您可以通过 Download all logs 按钮从网络 ui 下载完整的日志。

关于第一个休息api,我在浏览器中测试了url:https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/releases/{releaseId}/logs,它自动下载了一个log.zip文件到本地。在postman中测试,返回无法识别的代码。