Bitbucket 与 Azure DevOps 之间的集成
Integration between Bitbucket and Azure DevOps
我的要求是我想将我的 Bitbucket 存储库与 Azure DevOps CI 服务器集成,这样一旦我在 bitbucket 存储库中推送代码,我的管道就会在 Azure DevOps CI 中触发为此我在 Bitbucket 存储库中创建了一个 webhook。
我在 URL 部分添加了 Azure DevOps CI 服务器 URL 并在 Bitbucket 的 webhook 的秘密部分添加了秘密。秘密是在 Azure DevOps Server 中生成的个人访问令牌。
但是在创建 webhook 时我得到了
Resource not available for anonymous access. Client authentication required. - Azure DevOps server
即使我已经添加了一个秘密,为什么它会给出需要客户端身份验证的错误?可能是什么原因?
P.S。 - 缺少 Bitbucket 存储库和 Azure DevOps CI 服务器
之间集成的文档
Update :我已经按照 Vito Liu-MSFT 在答案中的建议在触发器选项卡上启用了持续集成,但是当我推送我的时,我的管道仍然没有自动触发bitbucket 中 feature/POC 分支的代码。
yml文件如下
resources:
repositories:
- repository: myRepo
type: externalgit
name: 'myRepo'
endpoint: myrepo
ref: feature/POC
trigger:
- feature/POC
I push code in the bitbucket repo my pipeline should trigger in the Azure DevOps CI server
我们可以在 Azure DevOps 中创建 服务连接,在 Azure DevOps 中创建管道并 select Bitbucket Cloud 作为源,然后 select Enable continuous integration
在 Triggers
选项卡上。我们可以参考这个doc了解更多详情。
更新1
是的,如果我们在触发器选项卡上启用持续集成,我们不需要 Bitbucket 中的 Webhook。我已经分享了我的测试结果,你可以查看下面的图片。
更新2
根据图片,您似乎使用 Azure Repos Git 作为来源,而不是 Bitbucket Cloud , 请注意源图标
更新3
在Azure DevOps中创建yaml管道,我们需要select Bitbucket Cloud作为代码资源。
然后 select Bitbucket 存储库,它会将 yaml 文件保存在 Bitbucket Repo 而不是 Azure DevOps 存储库中,然后我们可以配置 CI 触发器。
我正在使用默认的 yaml 模板进行测试。
注意:我们需要更新字段触发器,Azure DevOps 已将默认分支更新为 main 而不是 master
注意:如果 yml 文件保存在 Azure DevOps 存储库中,如果我们在 Bitbucket 存储库中推送代码,则不会触发构建。
结果:
我终于通过替换 {} 大括号中的值从 URL 下面创建了 webhook。现在我在 webhook 中收到了 200 个响应
https://{hostName}/{collectionName}/_apis/public/pipelines/webhooks/{projectName}/{buildDefinitionId}/{repositoryKey}?api-version=6.0-preview.1
BitBucket on-perm 服务器托管在哪里?您可以通过外部互联网访问 BitBucket 本地存储库吗?如果是,则托管代理也可以访问它们。
但是如果您无法从外部互联网访问存储库,那么托管代理也将无法访问 BitBucket 本地存储库。因此,您必须在互联网上公开 BitBucket 服务器。
另一种解决方法是在 BitBucket on-perm 服务器或与 BitBucket on-perm 服务器位于同一网络中的任何其他机器上部署私有代理(自托管代理)。因此私人代理可以访问 BitBucket 存储库...
我的要求是我想将我的 Bitbucket 存储库与 Azure DevOps CI 服务器集成,这样一旦我在 bitbucket 存储库中推送代码,我的管道就会在 Azure DevOps CI 中触发为此我在 Bitbucket 存储库中创建了一个 webhook。
我在 URL 部分添加了 Azure DevOps CI 服务器 URL 并在 Bitbucket 的 webhook 的秘密部分添加了秘密。秘密是在 Azure DevOps Server 中生成的个人访问令牌。 但是在创建 webhook 时我得到了
Resource not available for anonymous access. Client authentication required. - Azure DevOps server
即使我已经添加了一个秘密,为什么它会给出需要客户端身份验证的错误?可能是什么原因?
P.S。 - 缺少 Bitbucket 存储库和 Azure DevOps CI 服务器
之间集成的文档Update :我已经按照 Vito Liu-MSFT 在答案中的建议在触发器选项卡上启用了持续集成,但是当我推送我的时,我的管道仍然没有自动触发bitbucket 中 feature/POC 分支的代码。
yml文件如下
resources:
repositories:
- repository: myRepo
type: externalgit
name: 'myRepo'
endpoint: myrepo
ref: feature/POC
trigger:
- feature/POC
I push code in the bitbucket repo my pipeline should trigger in the Azure DevOps CI server
我们可以在 Azure DevOps 中创建 服务连接,在 Azure DevOps 中创建管道并 select Bitbucket Cloud 作为源,然后 select Enable continuous integration
在 Triggers
选项卡上。我们可以参考这个doc了解更多详情。
更新1
是的,如果我们在触发器选项卡上启用持续集成,我们不需要 Bitbucket 中的 Webhook。我已经分享了我的测试结果,你可以查看下面的图片。
更新2
根据图片,您似乎使用 Azure Repos Git 作为来源,而不是 Bitbucket Cloud , 请注意源图标
更新3
在Azure DevOps中创建yaml管道,我们需要select Bitbucket Cloud作为代码资源。
然后 select Bitbucket 存储库,它会将 yaml 文件保存在 Bitbucket Repo 而不是 Azure DevOps 存储库中,然后我们可以配置 CI 触发器。
我正在使用默认的 yaml 模板进行测试。
注意:我们需要更新字段触发器,Azure DevOps 已将默认分支更新为 main 而不是 master
注意:如果 yml 文件保存在 Azure DevOps 存储库中,如果我们在 Bitbucket 存储库中推送代码,则不会触发构建。
结果:
我终于通过替换 {} 大括号中的值从 URL 下面创建了 webhook。现在我在 webhook 中收到了 200 个响应
https://{hostName}/{collectionName}/_apis/public/pipelines/webhooks/{projectName}/{buildDefinitionId}/{repositoryKey}?api-version=6.0-preview.1
BitBucket on-perm 服务器托管在哪里?您可以通过外部互联网访问 BitBucket 本地存储库吗?如果是,则托管代理也可以访问它们。
但是如果您无法从外部互联网访问存储库,那么托管代理也将无法访问 BitBucket 本地存储库。因此,您必须在互联网上公开 BitBucket 服务器。
另一种解决方法是在 BitBucket on-perm 服务器或与 BitBucket on-perm 服务器位于同一网络中的任何其他机器上部署私有代理(自托管代理)。因此私人代理可以访问 BitBucket 存储库...