是否使用Azure DevOps从GitHub获取提交列表,以便作为版本的一部分传递给Sentry? [英] Using Azure DevOps, get list of commits from GitHub in order to pass to Sentry as part of a release?

查看:18
本文介绍了是否使用Azure DevOps从GitHub获取提交列表,以便作为版本的一部分传递给Sentry?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我想使用Sentry的"可疑提交"特性(这样它就可以指向可能导致特定问题的提交)。要实现这一点,我需要向Sentry发送一个版本(只是一个与特定项目相关联的版本),以及与之相关的关联提交列表。

我已阅读此帖子:

Azure DevOps integration in Sentry: Associate commits

GitHub上的这个:

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

虽然这两种方法都有(非常不同的)获取提交列表的方法,但它们假设其中一种使用的是Azure DevOps存储库特性。我的DevOps实例上没有存储库,所以,虽然帖子很有用,但它们并不能直接帮助我。

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

有人这么做过吗?我怎样才能做到这一点呢?我是不是遗漏了什么明显的东西?

推荐答案

正如我在评论中提到的,this票证中使用的get-changes接口不适合有gihub repos源的构建管道

但是,幸运的是,我们拥有对GitHub云的全功能支持。因此,在这里您可以使用另一个来获取这样的关联提交列表,这是我们没有记录的列表。

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

大多数情况下,当您从我们公开的文档中找不到方法时,可以考虑从F12捕获一些记录。以上API可以通过点击BuildSummary页面中的Changes链接从F12获取:


我编写了一个完整的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)"


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


更新日期:3/4/2020:

根据您在我们讨论中分享的屏幕截图,您的数据结构用于GIT回购(不确定为什么,会不会挖洞那个):

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

这篇关于是否使用Azure DevOps从GitHub获取提交列表,以便作为版本的一部分传递给Sentry?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆