You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无连通网络下的GitLab镜像搭建方案咨询

解决方案

针对三个无网络连通性、仅支持文件传输的环境,可通过以下几种离线方式实现GitLab仓库的只读镜像搭建:

方案一:基于Git裸仓库的离线同步(适合单仓库或批量仓库)

  • 在network_1的GitLab侧操作:
    1. 克隆需要镜像的仓库为裸仓库格式:
      git clone --bare git@network1-gitlab.example.com:group/project.git
      
    2. 将裸仓库打包为压缩文件,方便跨网络传输:
      tar -czf project_bare.tar.gz project.git/
      
  • 跨网络传输:通过允许的离线文件传输方式(如物理介质、离线同步工具)将压缩包传到network_2/3的目标服务器。
  • 在network_2/3的GitLab侧操作:
    1. 解压裸仓库包:
      tar -xzf project_bare.tar.gz
      
    2. 将裸仓库移动到GitLab的仓库存储目录(默认路径为/var/opt/gitlab/git-data/repositories/),并修正权限:
      mv project.git/ /var/opt/gitlab/git-data/repositories/group/
      chown -R git:git /var/opt/gitlab/git-data/repositories/group/project.git/
      
    3. 刷新GitLab仓库列表,让系统识别新导入的仓库:
      gitlab-rake gitlab:import:repos
      
    4. 设置仓库为只读:进入仓库设置页面,关闭「允许推送」权限;或通过API批量配置:
      curl --request PUT --header "PRIVATE-TOKEN: <你的GitLab令牌>" "https://network2-gitlab.example.com/api/v4/projects/<项目ID>" --data "allow_push=false"
      

方案二:GitLab完整备份+只读配置(适合全实例镜像)

  • 在network_1的GitLab侧操作:
    1. 执行全实例备份:
      gitlab-backup create
      
      备份文件默认存储在/var/opt/gitlab/backups/,格式为<时间戳>_gitlab_backup.tar
    2. 备份GitLab配置文件:
      tar -czf gitlab_config.tar.gz /etc/gitlab/gitlab.rb /etc/gitlab/gitlab-secrets.json
      
  • 跨网络传输:将备份文件和配置压缩包传到network_2/3的服务器。
  • 在network_2/3的GitLab侧操作:
    1. 安装与network_1完全同版本的GitLab,停止相关服务:
      gitlab-ctl stop puma
      gitlab-ctl stop sidekiq
      
    2. 恢复备份(替换<时间戳>为实际备份文件名的时间戳):
      gitlab-backup restore BACKUP=<时间戳>
      
    3. 恢复配置文件并重启服务:
      tar -xzf gitlab_config.tar.gz -C /
      gitlab-ctl reconfigure
      gitlab-ctl start
      
    4. 设置全局只读:修改/etc/gitlab/gitlab.rb,添加gitlab_rails['gitlab_default_can_push'] = false,执行gitlab-ctl reconfigure生效。

方案三:手动导出/导入仓库快照(适合少量仓库)

  • 在network_1的GitLab侧操作:进入目标仓库的「设置」→「导出项目」,选择导出格式为tar.gz,包含代码、分支、标签等内容,下载导出包。
  • 跨网络传输:将导出包传到network_2/3的服务器。
  • 在network_2/3的GitLab侧操作:进入「新建项目」→「导入项目」,选择「GitLab导出」,上传压缩包完成导入,之后进入仓库设置关闭推送权限。

关键注意事项

  • 版本一致性:确保network_2/3的GitLab版本与network_1完全一致,避免备份/导入时出现兼容性问题。
  • 增量同步优化:对于大仓库,可使用git bundle创建增量包减少传输体积:
    # 在network_1创建基于上次同步节点的增量包
    git bundle create project_increment.bundle <上次同步的Commit哈希>..main
    # 在目标服务器合并增量包
    cd project.git/
    git bundle unbundle ../project_increment.bundle
    
  • 权限管控:严格限制network_2/3实例的推送权限,避免误操作修改镜像内容。

内容的提问来源于stack exchange,提问作者C-nan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 16:22:47