Azure ASEv2环境下配置Bitbucket为Web App部署源遇错误求助
排查对外阻断ASEv2中Web App配置Bitbucket部署源失败的问题
我之前帮不少用户排查过这类ASEv2环境下的部署源配置问题,你遇到的BadRequest+OAuthException+Bitbucket AddWebHook 400错误,大概率和ASEv2的网络限制、Bitbucket OAuth权限不足或者WebHook回调不可达有关,咱们一步步来拆解排查:
1. 先确认ASEv2能正常出站访问Bitbucket
因为你的ASEv2是对外阻断模式,默认会限制大部分出站流量,首先得打通到Bitbucket的通道:
- 检查ASEv2关联的网络安全组(NSG):添加出站规则,允许访问
api.bitbucket.org和bitbucket.org这两个域名(或者对应的IP段,Bitbucket官方会公布这些IP范围) - 要是你的ASEv2还搭配了Azure Firewall或者自定义防火墙,也得把这两个域名加入放行列表,确保Web App能正常和Bitbucket的API通信
2. 验证Bitbucket OAuth应用的权限配置
这个OAuthException基本都是因为权限不够导致的,你得去Bitbucket那边检查下:
- 登录Bitbucket,进入个人设置或工作区设置,找到OAuth consumers
- 找到Azure用来连接的那个consumer,确保开启了这些权限:
- 仓库权限:
repository:read和repository:write(部署源需要读写权限来创建WebHook) - WebHook权限:
webhook:manage
- 仓库权限:
- 另外要确认consumer的回调URL是对的,格式一般是
https://<你的WebApp名称>.azurewebsites.net/.auth/login/bitbucket/callback,别填错了
3. 解决WebHook回调的可达性问题
这是ASEv2内部环境最容易踩的坑:因为对外阻断,Bitbucket的服务器没法直接访问你的Web App来触发WebHook,自然会导致AddWebHook失败:
- 如果你的ASEv2是**内部负载均衡(ILB)**类型,Web App没有公网IP,Bitbucket的WebHook请求根本穿不进来。这种情况可以试试这些方案:
- 用Azure Front Door或者反向代理暴露Web App的回调端点,让Bitbucket能正常访问
- 改用Azure DevOps管道中转:先让DevOps拉取Bitbucket的代码,再通过管道部署到ASEv2的Web App(前提是DevOps能访问你的ASEv2)
- 退一步用手动部署或者本地Git同步的方式
- 另外要确保你的Web App启用了HTTPS,Bitbucket的WebHook只支持HTTPS的回调地址
4. 检查Azure侧的部署源配置细节
有时候配置的小疏漏也会引发这个错误:
- 登录Azure Portal,进入Web App的部署中心,重新尝试配置Bitbucket源:
- 确认选的仓库、分支是正确的,且你有权限访问这个仓库
- 私有仓库的URL格式别填错,要是工作区仓库,得确保你有该工作区的访问权限
5. 拉取详细日志定位具体原因
如果前面几步都没解决,就得看更详细的错误日志了:
- 在Azure Portal的Web App里,进入日志->应用服务日志,开启详细部署日志
- 重新触发配置操作,然后查看
UpdateSiteSourceControl相关的日志,里面会有Bitbucket返回400的具体原因(比如是权限不足、回调地址无效还是其他问题)
内容的提问来源于stack exchange,提问作者Ziba Leah
相关产品推荐
相关产品推荐

