gitlab高级功能之mirroring - push mirroring(一)

今天给大家介绍一个gitlab很高级也是非常有用的功能 - gitlab的mirroring,你可以将仓库镜像到外部或从外部镜像仓库过来,从而可以实现分支、标签和提交的自动同步。

文章目录

    • [1. mirroring的实现方式](#1. mirroring的实现方式)
    • [2. push mirroring](#2. push mirroring)
      • [2.1 简介](#2.1 简介)
      • [2.2 说明](#2.2 说明)
    • [3. 配置推送镜像](#3. 配置推送镜像)
      • [3.1 基于https的方式](#3.1 基于https的方式)
        • [step1: 选择被推送的仓库所在的项目](#step1: 选择被推送的仓库所在的项目)
        • [step2: 选择需要推送的仓库所在的项目:](#step2: 选择需要推送的仓库所在的项目:)
      • [3.2 基于ssh方式](#3.2 基于ssh方式)
        • [step1: 选择被推送的仓库所在的项目](#step1: 选择被推送的仓库所在的项目)
        • [step2: 选择需要推送的仓库所在的项目](#step2: 选择需要推送的仓库所在的项目)
        • [step3: 在上一步的基础上查看ssh公钥](#step3: 在上一步的基础上查看ssh公钥)
        • [step4: 选择被推送的仓库所在的项目](#step4: 选择被推送的仓库所在的项目)
        • [step5: 选择需要推送的仓库所在的项目](#step5: 选择需要推送的仓库所在的项目)
        • [step6: 查看](#step6: 查看)

1. mirroring的实现方式

有以下几种mirroring的方法:

  • 推送:将仓库从 GitLab 镜像到另一个位置。
  • 拉取:将仓库从其他位置镜像到 GitLab 实例(专业版以上)。
  • 双向镜像:彼此相互镜像,但可能会导致冲突。

2. push mirroring

  • Gitlab 13.5引入,基于https支持lfs(大文件存储)
  • 参考:push-mirroring

2.1 简介

  • 推送镜像是一个下游存储库,用于镜像对上游存储库所做的提交。

  • 推送镜像被动接收对上游存储库所做的提交的副本。

  • 为防止镜像与上游存储库分流,请勿将提交直接推送到下游镜像。改为将提交推送到上游存储库。

2.2 说明

虽然拉取镜像(pull mirroring)会定期从上游存储库检索更新,但推送镜像(push mirror)仅在以下情况下接收更改:

  • 提交被推送到上游 GitLab 存储库。
  • 管理员强制更新镜像。

当更改推送到上游存储库时,推送镜像会收到它:

  • 五分钟内。
  • 在一分钟内,如果启用了仅镜像保护的分支。

如果是不同的分支,"镜像存储库"部分中会显示错误。

3. 配置推送镜像

3.1 基于https的方式

step1: 选择被推送的仓库所在的项目

如果需要通过某个用户来完成镜像推送,需要在协议后加上被推送仓库的username@,如https://renliting@docker.bdeet.top/test/aaa.git,对应的密码就是renliting用户的密码。改用户的权限至少是maintainer权限。

step2: 选择需要推送的仓库所在的项目:

Main menu -> Projects -> Settings > Repository -> **Mirroring repositories **-> input Git repository URL -Mirror direction(Push)-Authentication method(Password)-`Mirror repository

看到这种现象就说明已经ok了,当然你也可以测试下

3.2 基于ssh方式

参考链接:https://docs.gitlab.com/ee/user/project/repository/mirror/#get-your-ssh-public-key

step1: 选择被推送的仓库所在的项目

ssh的方式是将被推送的仓库的clone地址复制过来,然后需要url地址中的:改为/。如将git@docker.bdeet.top:mirror/ccc.git改为git@docker.bdeet.top/mirror/ccc.git

step2: 选择需要推送的仓库所在的项目

Main menu -> Projects -> Settings > Repository -> **Mirroring repositories **-> input Git repository URL -Mirror direction(Push)-Authentication method(SSH)-Mirror repository

step3: 在上一步的基础上查看ssh公钥
step4: 选择被推送的仓库所在的项目

Main menu -> Projects -> Settings > Repository -> **Mirroring repositories **-> Deploy keys

step5: 选择需要推送的仓库所在的项目

点击同步

显示已经同步完成

step6: 查看


可以发现,推送后两边的提交次数一致,说明推送成功。

相关推荐
oMcLin15 小时前
如何在 Red Hat OpenShift 上配置并优化 CI/CD 流水线,提升容器化应用的部署速度与可靠性?
ci/cd·openshift
卓码软件测评16 小时前
CMA/CNAS双资质软件测评机构【Apifox高效编写自动化测试用例的技巧和规范】
测试工具·ci/cd·性能优化·单元测试·测试用例
企鹅郁金香20 小时前
使用Docker部署Gitlab和Gerrit (一)
docker·容器·gitlab·gerrit部署
一次旅行21 小时前
Jenkins实现CI/CD流水线
运维·servlet·ci/cd·jenkins·测试总结
可爱又迷人的反派角色“yang”2 天前
CICD持续集成Ruo-Yi项目
linux·运维·网络·ci/cd·docker·容器
少云清2 天前
【接口测试】6_持续集成 _代码
ci/cd·接口测试·持续集成
Java 码农2 天前
gitlab gitrunner springboot 多环境多分支部署 (非容器方式,使用原生linux 环境)
linux·spring boot·gitlab
喜欢吃豆2 天前
代理式 CI/CD 的崛起:Claude Code Action 深度技术分析报告
人工智能·ci/cd·架构·大模型
卓码软件测评2 天前
第三方软件国产化测评机构【API验收测试,除了Postman,还有什么推荐工具?】
测试工具·ci/cd·性能优化·单元测试·测试用例·postman
Java 码农2 天前
GitLab + GitLab Runner + Spring Cloud Alibaba 多环境多分支容器化部署方案(docker)
docker·容器·gitlab