对于 GitLab,必须手动为每个存储库设置拉/推镜像。
我想知道有没有任何方式可以自动将所有 Github 存储库同步到 GitLab,这样
- 当您在 GitHub 中创建新存储库时,GitLab 中的存储库将自动创建并充当拉取镜像。
- 对于 Github 中的所有旧存储库,请在 GitLab 中设置存储库,使其充当拉式镜像。
以下是我的想法:
- 提案:
- 不使用 gitlab pull mirror 或 github action 来推送
- 方法 0:服务器中的脚本定期将更改从所有 github 存储库拉取到本地 github 并推送到 gitlab。
- 问题
- 要求服务器始终运行,并且必须在驱动器中包含所有 github 存储库。
- 使用 gitlab 拉镜像:
- 方法一:当你在 GitHub 中创建一个新的 repo 时,webhook 被发送到一个可以创建 GitLab repo 的脚本,然后设置镜像
- 问题
- gitlab 中没有配置拉取镜像的 API,因此无法实现自动化。 existing feature request
- 即使有api,pull mirror也只支持密码或deploy key
- 密码:您的 github 帐户变得危险
- 部署密钥:
- 必须通过程序检索部署密钥
- 似乎不是通过 api 自动将部署密钥附加到 github 存储库的简单方法?
- 使用 github action 充当推送镜像:
- 方法 2:服务器不断运行以检查是否有任何 GitHub 存储库在 Gitlab 中没有对应部分,如果找到,则创建一个 GitLab 存储库,通过 api 添加一个 gitHub 操作到该 GitHub 存储库,该存储库设置为将更改推送到新创建的 gitlab 存储库。
- 优势:
- Github 中的所有旧仓库和新仓库都将链接到 gitlab。
- 问题:
- 由于服务器必须添加一个github动作,这意味着它对所有github存储库具有写入权限,如果服务器被黑,黑客可以添加任何提交或更改提交历史。
- github 操作将对对应的 gitlab 存储库具有写入权限
- 可能是通过 github secret 中设置的 ssh 密钥