使用 Azure DevOps,从 GitHub 获取提交列表,以便作为发布的一部分传递给 Sentry?

Ode*_*ded 6 github git-commit sentry azure-pipelines

我正在使用 Azure 管道通过其 GitHub 集成来构建和发布我的软件。作为监控的一部分,我使用 Sentry 来记录异常等。

我想使用 Sentry 的“可疑提交”功能(因此它可以指向可能导致特定问题的提交)。为此,我需要向 Sentry 发送一个发布(只是与特定项目相关联的版本),其中包含与之相关的相关提交列表。

我读过这篇文章:

Sentry 中的 Azure DevOps 集成:关联提交

GitHub 上的这个:

https://github.com/getsentry/sentry/issues/11127

虽然两者都有(非常不同的)获取提交列表的方法,但他们假设一个正在使用 Azure DevOps 存储库功能。我的 DevOps 实例上没有存储库,因此,尽管帖子很有用,但它们并没有真正直接帮助我。

简而言之 - 我需要在 GitHub 上列出与 Azure DevOps 上的特定版本相关联的所有提交,以便我可以将它们发送到 Sentry API。

有没有人做过这个?我怎样才能做到这一点?我错过了一些明显的东西吗?

Mer*_*SFT 0

正如我在评论中提到的,本票中使用的get-changes api不适合具有github repos source 的构建管道。

但是,幸运的是,我们对 github 云有完整的功能支持。因此,在这里您可以使用另一个来获取此类关联提交列表,即我们未记录的列表。

GET https://dev.azure.com/{org name}/{project name}/_traceability/runview/changes?currentRunId={build id}&__rt=fps&__ver=2
Run Code Online (Sandbox Code Playgroud)

大多数时候,F12当您从我们公开的文件中找不到办法时,您可以考虑从 中捕获一些记录。Changes当您点击构建页面中的链接时,可以通过F12获取以上api Summary

在此输入图像描述


我编写了一个完整的 powershell 脚本,您可以直接在发布管道中使用它,以从其响应正文中获取提交 id:

$token = "{PAT token}"

$url="https://dev.azure.com/{org name}/{project name}/_traceability/runview/changes?currentRunId={build id}&__rt=fps&__ver=2"

$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.fps.dataProviders.data.'ms.vss-traceability-web.traceability-run-changes-data-provider'.artifactsData.data.id | ConvertTo-Json -Depth 100)"
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


在release pipeline中,我们提供了一个内置的环境变量,您可以直接获取对应的触发的Build id:$(Build.Buildid)。您可以将其注入到api中,以便在CI+CD过程中自动获取构建id。


2020 年 3 月 4 日更新:

根据您在我们的讨论中分享的屏幕截图,您的数据结构适用于 git repo(不知道为什么,会挖掘它):

请使用 YAML 传输管道。然后触发它并使用我上面共享的脚本编写提交。您将看到来自 YAML 结果的提交数据。