azure-devops - 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 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)"
现在,您可以获得与构建和相应版本相关联的提交列表。
推荐阅读
- couchdb - 如何从 CouchDB 中检索仅具有修订 ID 的数据?
- r - 在 R 中同时创建更多的伪随机矩阵?比较点符号匹配?
- c - 多少个素数C程序
- python - 可视化特征图:IndexError:数组索引过多
- python - 我尝试使用 optim() 优化模型参数,但我得到了相同的参数。我如何获得优化的参数?
- c# - 检查匹配属性和字段的更有效和高效的方法是什么
- visual-c++ - 为什么我在 HLSL 错误 X8000 中收到此错误
- django - 如何解决 factory_boy SubFactory 调用中的 CyclicDefinitionError?
- jira - EPIC 状态的 JIRA webhook 问题
- java - 为什么 0042 听起来 34 到 int?