git - 自动将所有 GitHub 存储库镜像到 gitlab
问题描述
对于 GitLab,必须手动为每个存储库设置拉/推镜像。
我想知道有什么方法可以自动将所有 Github repo 同步到 GitLab,这样
- 当您在 GitHub 中创建新的仓库时,GitLab 中的仓库将自动创建并充当拉镜像。
- 对于 Github 中的所有旧存储库,请在 GitLab 中设置存储库,其作用类似于拉镜像。
以下是我的想法:
- 提议:
- 不使用 gitlab pull mirror 或 github action 推送
- 方法 0:服务器中的脚本定期将所有 github repo 中的更改从 github 拉到本地并推送到 gitlab。
- 问题
- 要求服务器始终运行,并且它必须包含驱动器中的所有 github 存储库。
- 问题
- 方法 0:服务器中的脚本定期将所有 github repo 中的更改从 github 拉到本地并推送到 gitlab。
- 使用 gitlab 拉镜像:
- 方法一:当你在 GitHub 上创建一个新的 repo 时,webhook 被发送到一个可以创建 GitLab repo 的脚本,然后设置镜像
- 问题
- gitlab中没有配置拉镜像的API,所以不能自动化。现有功能请求
- 即使有api,拉镜像只支持密码或部署密钥
- 密码:您的 github 帐户变得危险
- 部署密钥:
- 必须通过程序检索部署密钥
- 通过 api 自动将部署密钥附加到 github repo 似乎没有简单的方法?
- 问题
- 方法一:当你在 GitHub 上创建一个新的 repo 时,webhook 被发送到一个可以创建 GitLab repo 的脚本,然后设置镜像
- 使用 github 操作来充当推送镜像:
- 方法 2:服务器不断运行以检查是否有任何 GitHub 存储库在 Gitlab 中没有对应部分,如果找到,则创建一个 GitLab 存储库,通过 api 添加一个 gitHub 操作到该 GitHub 存储库,该存储库设置为将更改推送到新创建的gitlab 回购。
- 优势:
- Github 中的所有旧仓库和新仓库都将链接到 gitlab。
- 问题:
- 由于服务器必须添加 github 操作,这意味着它具有对所有 github 存储库的写入权限,如果服务器被黑客入侵,黑客可以添加任何提交或更改提交历史。
- github 操作将具有对对应 gitlab 存储库的写入权限
- 可能是通过 github secret 中设置的 ssh 密钥
- 所以秘密也必须由 api 添加,但似乎这样的 api 还不存在github secret api
- 可能是通过 github secret 中设置的 ssh 密钥
- 优势:
- 方法 2:服务器不断运行以检查是否有任何 GitHub 存储库在 Gitlab 中没有对应部分,如果找到,则创建一个 GitLab 存储库,通过 api 添加一个 gitHub 操作到该 GitHub 存储库,该存储库设置为将更改推送到新创建的gitlab 回购。
- 不使用 gitlab pull mirror 或 github action 推送
解决方案
目前(对于 Gitlab 13.9 版)无法自动执行此操作。就像您在问题中所说的那样,必须为您要镜像的每个存储库手动完成。
推荐阅读
- javascript - 如何获取表格行中点击元素的 id?
- android - 如何在android中的relativelayout中定位LinearLayouts?
- sql - 获取插入到雪花数据仓库中的行的标识
- postgresql - 将“db.backup”导入 phpPgAdmin 时出现问题
- excel - Excel:从尚未指定的范围内返回值
- macos - MacOS Mojave 终端的字体不会改变。它将每个用户安装的字体显示为 Helvetica
- laravel - larvel 刀片模板和 elequent 模型——如何在许多关系中获取第一个元素
- jenkins - MSBuild 项目的 SONAR + R# 分析集成
- qt - 如何将 QString qDebug 输出作为字符串?
- python-3.x - 导入张量流时的未来警告