首页 > 解决方案 > Sentry 中的 Azure DevOps 集成:关联提交

问题描述

有人设法将 Azure DevOps 集成到 Sentry (sentry.io) 中吗?我坚持“将提交与发布相关联”(请参阅​​:https ://docs.sentry.io/workflow/releases/?platform=browser#associate-commits-with-a-release )

我无法弄清楚如何告诉 Sentry(通过 API)哪些提交 ID 与当前版本/部署相关联。如何将任务添加到将提交 ID 发布到 Sentry API 的管道?还是有其他方法可以做到这一点?

标签: azure-devopsazure-pipelinessentry

解决方案


在 azure devops 中,该Powershell任务还支持curl. 因此,您可以直接在 VSTS 管道的 powershell 任务中执行api

在发布管道中,有一个预定义的发布变量,它存储了与当前发布管道相关联的提交 ID$(Release.Artifacts.{alias}.SourceVersion) : 。这alias工件名称,您可以通过get得到它$(Release.PrimaryArtifactSourceAlias)

首先,创建如下变量:

在此处输入图像描述

然后您可以将变量应用$(id)到该 API,并在 powershell 任务中执行 api:

"refs": [{
 "commit":"$(id)"
 }]

现在,commit id可以将其打包到这个 api 的主体中,并发送到 Sentry 服务器。


如果有多个与此版本相关的提交,由于$(Release.Artifacts.{alias}.SourceVersion)我上面提到的变量只存储最新的提交消息,因此您可能需要添加额外的脚本来通过Build id获取您想要的内容。

在发布管道中,您可以使用 $(Build.BuildId) 获取与此版本相关联的相应buildid 。然后,您可以使用此API获取提交(更改):

GET https://dev.azure.com/{organization}/{project}/_apis/build/changes?fromBuildId={fromBuildId}&toBuildId={toBuildId}&api-version=5.1-preview.2

在此处输入图像描述

您可以将这些 powershell 脚本应用到您的任务中而无需进行任何更改,因为此脚本在 VSTS 中的 powershell-ise、powershell 命令行和 powershell 任务中是通用的。

$token = "{PAT token}"
$url="https://dev.azure.com/{org name}/{project name}/_apis/build/changes?fromBuildId={id1}&toBuildId={id2}"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get
Write-Host "results = $($response.value.id | ConvertTo-Json -Depth 100)"

现在,您可以获得与构建和相应版本相关联的提交列表。


推荐阅读