如何在Bitbucket和Azure DevOps之间创建Webhook?

时间:2018-10-29 11:45:47

标签: continuous-integration azure-devops bitbucket

我们所有的存储库都位于Bitbucket中,我正在尝试为Azure DevOps建立连续的集成服务,该服务将在每次推送后构建项目。

我们为Bitbucket存储库创建了一个专用用户帐户,该帐户只能访问所有存储库。

但是,从Bitbucket到Azure Devops创建CI Webhook触发器需要管理员对存储库的访问权限。我们不想授予对CI用户帐户的访问级别。

我可以手动将Webhook添加到Bitbucket存储库,但是我缺少URL,该Webhook应该将触发器发布到该URL。

网址类似于https://dev.azure.com/myorganization/_apis/public/hooks/externalEvents?publisherId ...

我认为它称为部署触发器网址,但我在任何地方都找不到它。新的Azure DevOps是否支持手动添加Webhooks,还是我们必须以某种方式手动进行?

2 个答案:

答案 0 :(得分:1)

我和你们都在同一条船上。我不想授予我的CI帐户“管理员”任何回购权。

到目前为止,我的解决方法是为CI帐户提供临时访问权限,以便在首次保存管道时创建Webhook,然后在创建Webhook之后将其降级,因为知道任何更改都将需要另一个临时权限提升。

FWIW,使用的webhook URL是这样的: https://[REDACTED].visualstudio.com/_apis/public/hooks/externalEvents?publisherId=bitbucket&channelId=[REDACTED]&api-version=5.1-preview

正如您所看到的,我们有点像是可以理解的Catch-22,因为我们可以想象地创建管道并获得channelId以便在Bitbucket中手动创建Webhook,但甚至不能保存没有回购管理员权限的管道,因此我们无法获得channelId

我希望有一种方法可以禁用webhook的创建,以便我们可以在Bitbucket端手动创建它。

答案 1 :(得分:0)

我知道这已经很久了,但最近我遇到了完全相同的问题,我想我应该在此处添加此内容,以便任何努力找出这些 URL 来自何处的人。

>

我在 Bitbucket 中看到两个格式为 https://dev.azure.com/[myorganization]/_apis/public/hooks/externalEvents?publisherId=.. 的 webhook。我试图弄清楚这些最初是如何创建的。

事实证明,当您在 Azure 中创建新的 Bitbucket Pipeline 并为此管道选择存储库时,Azure 会自动在 Bitbucket 中为我们创建这些 webhook!换句话说,它似乎不是从任何地方推断这些 URL 的方法,而是它们在创建管道时由 Azure 创建,并且一旦您从 Azure 中删除管道,它们就会被 Azure 删除。