从远端仓库拉取 (PREMIUM)
移动到专业版于 13.9 版本。
您可以使用极狐GitLab 界面浏览仓库的内容和活动,即使它没有托管在极狐GitLab 上。创建拉取镜像,将分支、标签和提交从上游仓库复制到您的。
与推送镜像不同,拉取镜像按计划从上游(远端)仓库检索更改。为防止镜像与上游仓库分叉,请勿将提交直接推送到下游镜像。改为将提交推送到上游仓库。远端仓库中的更改在以下情况被拉入极狐GitLab 仓库:
- 在一定时间内自动。自助管理实例可以配置拉取镜像间隔。
- 当管理员强制更新镜像。
- 当 API 调用触发更新时。
默认情况下,如果下游拉取镜像上的任何分支或标签与本地仓库不同,极狐GitLab 将停止更新该分支。这可以防止数据丢失。上游仓库中删除的分支和标签不会反映在下游仓库中。
NOTE: 对于从下游拉取镜像仓库中删除但仍在上游仓库中的项目,将在下一次拉取时恢复。例如:仅在镜像仓库中删除的分支,将在下一次拉取后重新出现。
拉取镜像如何工作
将 GitLab 仓库配置为拉取镜像后:
- 极狐GitLab 将仓库添加到队列中。
- 每分钟一次,Sidekiq cron 作业调度仓库镜像更新,基于:
- 可用容量,由 Sidekiq 设置决定。
- 队列中已有多少镜像需要更新。到期取决于上次更新仓库镜像的时间以及重试更新的次数。
- Sidekiq 可用于处理更新,镜像被更新。如果更新过程:
- 成功:更新再次排队等待至少 30 分钟。
- 失败:稍后再次尝试更新。在 14 次失败后,镜像被标记为 hard failure 并且不再排队等待更新。分支与其上游对应分支的分叉可能导致故障。为防止分支分叉,请在创建镜像时配置覆盖分叉的分支。
配置拉取镜像
先决条件:
- 如果您的远端仓库在 GitHub 上并且您已配置双重身份验证 (2FA),创建一个 GitHub 的个人访问令牌
repo范围。如果启用了 2FA,此个人访问令牌将用作您的 GitHub 密码。
- 在顶部栏上,选择 菜单 > 项目 并找到您的项目。
- 在左侧边栏上,选择 设置 > 仓库。
- 展开 镜像仓库。
- 输入 Git 仓库 URL。如果需要,请在 URL 中包含用户名:
https://MYUSERNAME@github.com/GROUPNAME/PROJECTNAME.git - 在 镜像方向,选择 拉取。
- 在 验证方式 中,选择您的认证方式。
- 选择您需要的任何选项:
- 覆盖分叉分支
- 触发镜像更新的流水线
- 仅镜像受保护的分支
- 要保存配置,请选择 镜像仓库。
覆盖分叉的分支
移动到专业版于 13.9 版本。
要始终使用远端版本更新本地分支,即使它们已从远端分支,请在创建镜像时选择 覆盖分叉分支。
WARNING: 对于镜像分支,启用此选项会导致本地更改丢失。
触发镜像更新的流水线
移动到专业版于 13.9 版本。
如果启用此选项,则在从远端仓库更新分支或标签时触发流水线。根据远端仓库的活动,这可能会大大增加 CI 运行程序的负载。仅当您知道它们可以处理负载时才启用此功能。CI 使用设置拉取镜像时分配的凭据。
使用 API 触发更新
移动到专业版于 13.9 版本。
拉取镜像使用轮询来检测上游添加的新分支和提交,通常是在几分钟之后。您可以使用 API 调用通知极狐GitLab,但最小拉取拉镜像限制的间隔仍然强制执行。
镜像时修复硬故障
移动到专业版于 13.9 版本。
连续 14 次重试失败后,镜像过程将被标记为硬故障并停止镜像尝试。此故障在以下任一情况下可见:
- 项目的主仪表板。
- 拉取镜像设置页面。
要恢复项目镜像,强制更新。