GitLab 仓库的自动同步

这个需求应该比较常见,例如内网搭建 GitLab,供大家平日正常工作使用,在外网同时建立镜像仓库,有限访问权限,供灾备以及某些环境下的部署使用。本文的互联网托管服务以 bitbucket.org 为例。

首先,要在外网创建需要同步的仓库(空仓库即可),其访问 URL 形如 ssh://git@@bitbucket.org/username/repo.git。在内网仓库的设置中打开 Mirroring repositories 页面,将此 URL 填入。选中 SSH public key 作为认证方式(密码认证的方式略过不表),然后点击“Mirror repository”按钮。没有问题的话将会在下方出现刚刚设置的本条同步记录。其尾部是三个按钮,功能分别为复制公钥、执行同步、删除此同步任务。公钥需要复制下来,然后将之添加到外网仓库的设置里。

不知为何,bitbucket.org 中项目级的设置中的 SSH key 仅支持只读访问,因此为了同步成功,需要将之置于个人账户的 SSH key 列表。比较郁闷的是,设置每个仓库的每个同步任务时 GitLab 都会生成新的 key。这两件事结合起来,在某种程度上可以看作是有安全隐患的。

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注