Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自动将所有GitHub存储库镜像到gitlab_Git_Github_Gitlab - Fatal编程技术网

自动将所有GitHub存储库镜像到gitlab

自动将所有GitHub存储库镜像到gitlab,git,github,gitlab,Git,Github,Gitlab,对于GitLab,必须手动为每个存储库设置拉/推镜像 我想知道是否有任何方法可以自动将所有Github回购同步到GitLab,例如 当您在GitHub中创建一个新的回购时,GitLab中的回购将自动创建,并起到拉镜像的作用 对于Github中的所有旧回购,在GitLab中设置类似于拉镜的回购 以下是我的想法: 提议: 不要使用gitlab pull mirror或github操作来推送 方法0:服务器中的脚本定期将更改从所有github repo从github拉到本地,并推送到gitl

对于GitLab,必须手动为每个存储库设置拉/推镜像

我想知道是否有任何方法可以自动将所有Github回购同步到GitLab,例如

  • 当您在GitHub中创建一个新的回购时,GitLab中的回购将自动创建,并起到拉镜像的作用
  • 对于Github中的所有旧回购,在GitLab中设置类似于拉镜的回购
以下是我的想法:

  • 提议:
    • 不要使用gitlab pull mirror或github操作来推送
      • 方法0:服务器中的脚本定期将更改从所有github repo从github拉到本地,并推送到gitlab。
        • 问题
          • 要求服务器始终运行,并且它必须包含驱动器中的所有github repo
    • 使用gitlab pull mirror:
      • 方法1:当您在GitHub中创建新的repo时,webhook被发送到一个脚本,该脚本可以创建GitLab repo,然后设置镜像
        • 问题
          • gitlab中没有配置拉镜像的API,因此无法实现自动化
          • 即使有api,拉镜像也只支持密码或部署密钥
            • 密码:您的github帐户变得危险
            • 部署密钥:
              • 必须按程序检索部署密钥
              • 似乎没有通过api将部署密钥自动附加到github repo的简单方法
    • 使用github操作可以像推送镜像一样操作:
      • 方法2:服务器持续运行,检查GitHub repo是否在Gitlab中没有计数器部件,如果找到,创建Gitlab repo,通过api向GitHub存储库添加GitHub操作,该存储库设置为将更改推送到新创建的Gitlab repo。
        • 优点:
          • Github中的所有旧存储库和新存储库都将链接到gitlab
        • 问题:
          • 由于服务器必须添加github操作,这意味着它拥有对所有github存储库的写入权限,如果服务器被黑客攻击,黑客可以添加任何提交或更改提交历史记录
          • github操作将具有对对应gitlab存储库的写入权限
            • 可能是通过github secret中设置的ssh密钥
              • 因此,这个秘密也必须由api添加,但似乎这样的api还不存在

目前(对于Gitlab 13.9版),没有办法自动完成这项工作。正如您在问题中所说,必须为要镜像的每个存储库手动执行此操作。

经过一个月的研究,我找到了一种方法

为此编写了一个python脚本


你试过什么?你做了什么研究?“什么不起作用?”丹尼尔曼我不知道从哪里开始,所以我问这个问题。此外,在中,似乎没有要求该问题附带经过尝试的方法和所做的研究。“只要问题定义明确且没有意义,它是可以接受的。@丹尼尔曼我的搜索和研究是我问题的第一句话。镜像必须为每个存储库手动设置,所以它不能解决这个问题。我相信有一个,但是对于GITHUB和GITLAB的API来说,应该是非常熟悉的。是的,这是绝对有效的(我以前使用GITLAB CI用于GITHUB项目之前),但是我不认为是“自动的”。由于这是一个非常定制的设置,GitLab CI通常只导入GitHub repo,包括所有以前的提交,但是GitHub repo中的新更改不会反映在GitLab repo中。