Bitbucket提交代码后触发GitHub仓库同步的功能是否可实现?
Bitbucket 自动同步到 GitHub 实现方案
该需求完全可实现,以下是两种常用的落地方案,适配不同使用场景:
方案1:Bitbucket Pipelines 实时同步(推荐)
这是最稳定的实时同步方案,全程不需要第三方服务依赖:
- 第一步:在GitHub生成一个拥有
repo权限的Personal Access Token(PAT),生成后及时保存,Token仅会显示一次 - 第二步:打开Bitbucket对应仓库的「Repository settings」→「Repository variables」,新增两个加密变量:
GITHUB_PAT:填写上一步生成的GitHub PATGITHUB_REPO:填写GitHub仓库地址,格式为https://<你的GitHub用户名>:$GITHUB_PAT@github.com/<GitHub用户名>/<目标仓库名>.git
- 第三步:在Bitbucket仓库根目录新建
bitbucket-pipelines.yml配置文件,内容参考如下:
image: alpine/git pipelines: # 所有分支推送都触发同步,也可以自定义触发规则,比如只同步main分支 default: - step: name: 同步代码到GitHub script: - git config --global user.name "Bitbucket Sync Bot" - git config --global user.email "sync-bot@example.com" # 全量镜像同步,包含所有分支、标签 - git push --mirror $GITHUB_REPO
配置完成后,所有向Bitbucket提交的代码都会在几秒内自动同步到GitHub,你直接在Azure Web App绑定对应的GitHub仓库即可实现正常的自动部署流程。
方案2:GitHub 定时拉取同步
如果不需要实时同步,也可以用GitHub自带的镜像功能实现定时同步:
- 打开GitHub目标仓库的设置页,找到「Code security and analysis」→「Repository mirroring」
- 填写Bitbucket仓库的拉取地址,配置认证信息后开启自动拉取即可,GitHub会每隔数小时自动拉取Bitbucket的代码变更
注意事项
- 同步前请确认两个仓库的主分支名称一致,若存在命名差异(如Bitbucket用
master、GitHub用main),需要提前调整分支命名或者在同步脚本中添加分支映射规则 - 若仓库开启了Git LFS存储大文件,需要在同步脚本中额外添加
git lfs push --all $GITHUB_REPO命令,避免大文件同步丢失 - 所有认证凭证请存在平台自带的加密变量中,禁止明文写在配置文件内,避免权限泄露
内容的提问来源于stack exchange,提问作者Damian_Tulacz
相关产品推荐
相关产品推荐

