为了使用GitLab,每个仓库都需要手动设置拉取/推送镜像。
我想知道是否有任何方法可以自动同步所有Github仓库到GitLab,这样做的话:
提案:
我想知道是否有任何方法可以自动同步所有Github仓库到GitLab,这样做的话:
- 当你在GitHub上创建新的仓库时,GitLab中将自动创建一个仓库并充当拉取镜像。
- 对于所有旧的GitHub仓库,在GitLab中设置将充当拉取镜像的仓库。
提案:
- 不使用GitLab Pull Mirror或GitHub Action进行推送
- 方法0:在服务器上编写脚本,定期从GitHub拉取所有更改并将其推送到GitLab的本地
- 问题:
- 需要始终运行服务器,并且必须在驱动器中包含所有GitHub仓库。
- 使用GitLab Pull Mirror:
- 方法1:创建新的GitHub仓库时,Webhook会发送到一个脚本,该脚本可以创建GitLab仓库,然后设置镜像
- 问题:
- GitLab没有API可用于配置Pull Mirror,因此无法自动化。 现有功能请求
- 即使有API,Pull Mirror也仅支持密码或部署密钥
- 密码:您的GitHub帐户变得危险。
- 部署密钥:
- 必须通过程序检索部署密钥。
- 似乎没有一种轻松的方法通过API自动将部署密钥附加到GitHub repo?
- 使用GitHub Action模拟Push Mirror:
- 方法2:一个常驻服务器不断检查GitHub repo是否有GitLab对应项,如果找到,则创建一个GitLab repo,并通过API将一个GitLab Action添加到该GitHub仓库中,以便将更改推送到新创建的GitLab repo。
- 优点:
- 所有旧的和新的GitHub仓库都将与GitLab链接。
- 问题:
- 由于服务器必须添加GitHub Action,这意味着它具有所有GitHub存储库的写入权限,如果服务器被黑客攻击,则黑客可以添加任何提交或更改提交历史记录。
- GitHub Action将具有对应的GitLab存储库的写入权限
- 可能是通过在GitHub secret中设置的SSH密钥
- 因此必须通过API添加机密,但似乎这样的API尚不存在 github secret api
- 可能是通过在GitHub secret中设置的SSH密钥