Help us learn about your current experience with the documentation. Take the survey.

升级 GitLab 安装

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab Self-Managed

升级 GitLab 是一个相对直接的过程,但复杂性可能会根据以下因素增加:

  • 您使用的安装方法。
  • 您的 GitLab 版本有多旧。
  • 您是否要升级到主版本。

如果可能,您应该在更新生产实例之前先在测试环境中测试升级。您的测试环境应尽可能模拟生产环境。

请务必阅读整页内容,因为它包含了与每种升级方法相关的信息。

升级 GitLab

要升级 GitLab:

  1. 创建一个升级计划来记录您的升级步骤。
  2. 熟悉维护策略文档当前维护的版本
  3. 阅读您要跳过的版本的发布文章。 特别是关于弃用、移除和升级的重要说明。
  4. 使用升级路径工具,确定您应该采取的升级路径。 如果您的升级路径包含必需的升级停点,您可能需要执行多次升级才能从当前版本迁移到目标版本。 如果相关,请检查目标 GitLab 版本的操作系统兼容性
  5. 检查后台迁移。所有迁移必须在每次升级前完成运行。 您必须在主要版本和次要版本之间分散升级,以便为后台迁移完成留出时间。
  6. 首先在测试环境中测试您的升级,并制定一个回滚计划, 以减少计划外停机和长时间停机的风险。
  7. 如果您的起始版本中可用,请在升级期间考虑开启维护模式
  8. 升级前,查看不同 GitLab 版本的更改以确保兼容性:
  9. 执行升级前检查
  10. 暂停正在运行的 CI/CD 管道和作业
  11. 如果相关,请遵循附加功能的升级步骤
  12. 遵循基于您的安装方法的升级步骤
  13. 如果您的 GitLab 实例有任何关联的 runner,请将它们升级到与当前 GitLab 版本匹配。 此步骤确保与 GitLab 版本的兼容性
  14. 如果您在升级过程中遇到问题,获取支持
  15. 如果您启用了维护模式,请禁用维护模式
  16. 恢复正在运行的 CI/CD 管道和作业
  17. 执行升级后检查

根据安装方法升级

根据安装方法和您的 GitLab 版本,有多种官方方式可以升级 GitLab:

作为 GitLab 升级的一部分,Linux 软件包升级指南包含了升级 Linux 软件包实例的具体步骤。

GitLab 可以使用 Helm 部署到 Kubernetes 集群中。对于生产部署,设置遵循云原生混合指南, 其中云原生 GitLab 的无状态组件使用 GitLab Helm chart 在 Kubernetes 中运行,有状态组件则使用 Linux 软件包部署在计算虚拟机中。

使用版本映射从 chart 版本到 GitLab 版本来确定升级路径

遵循多节点升级(停机)在云原生混合设置中执行升级。

完全云原生部署不受支持用于生产。 但是,如何升级此类环境的说明在单独的文档中。

GitLab 为社区版和企业版都提供了官方 Docker 镜像,它们基于 Linux 软件包。 请参阅如何使用 Docker 安装 GitLab

过去我们使用单独的文档进行升级说明,但我们已切换到使用单个文档。 旧的升级指南仍然可以在 Git 仓库中找到:

升级前和升级后检查

在升级前后立即执行升级前和升级后检查,以确保 GitLab 的主要组件正常工作:

  1. 检查常规配置

    sudo gitlab-rake gitlab:check
  2. 检查所有后台数据库迁移的状态

  3. 确认加密的数据库值可以解密

    sudo gitlab-rake gitlab:doctor:secrets
  4. 在 GitLab UI 中,检查:

    • 用户可以登录。
    • 项目列表可见。
    • 项目问题和合并请求可访问。
    • 用户可以从 GitLab 克隆仓库。
    • 用户可以向 GitLab 推送提交。
  5. 对于 GitLab CI/CD,检查:

    • Runner 会接收作业。
    • Docker 镜像可以从注册表中推送和拉取。
  6. 如果使用 Geo,在主站点和每个次要站点上运行相关检查:

    sudo gitlab-rake gitlab:geo:check
  7. 如果使用 Elasticsearch,验证搜索是否成功。

如果出现问题,获取支持

升级期间的 CI/CD 管道和作业

如果您在 GitLab Runner 处理作业时升级 GitLab 实例,则跟踪更新会失败。 当 GitLab 恢复在线时,跟踪更新应该会自动修复。但是,根据错误的不同, GitLab Runner 会重试或最终终止作业处理。

至于制品,GitLab Runner 会尝试上传它们三次,之后作业最终会失败。

为解决上述两种情况,建议在升级前执行以下操作:

  1. 规划您的维护。

  2. 暂停您的 runner,或通过将以下内容添加到您的 /etc/gitlab/gitlab.rb 来阻止新作业启动:

    nginx['custom_gitlab_server_config'] = "location = /api/v4/jobs/request {\n deny all;\n return 503;\n}\n"

    然后使用以下命令重新配置 GitLab:

    sudo gitlab-ctl reconfigure
  3. 等待所有作业完成。

  4. 升级 GitLab。

  5. 升级 GitLab Runner 到与您的 GitLab 版本相同的版本。 两个版本应该相同

  6. 恢复您的 runner 并通过还原之前的 /etc/gitlab/gitlab.rb 更改来阻止新作业启动。

版本间升级

GitLab 有两种版本:社区版(采用 MIT 许可证)和企业版, 它建立在社区版之上,并包含额外功能,主要面向拥有超过 100 个用户的组织。

在下一节中,您可以找到一些帮助您更改 GitLab 版本的指南。

附加功能的升级步骤

某些 GitLab 功能有额外的步骤。

外部 Gitaly

在升级应用服务器之前,将 Gitaly 服务器升级到新版本。这可以防止应用服务器上的 gRPC 客户端发送旧版 Gitaly 不支持的 RPC。

Geo

如果您使用 Geo:

GitLab agent for Kubernetes

如果您有与 GitLab 连接的 Kubernetes 集群,升级您的 GitLab agents for Kubernetes 以匹配您的新 GitLab 版本。

Elasticsearch

在更新 GitLab 之前,通过检查待处理的迁移确认高级搜索迁移已完成。

更新 GitLab 后,如果新版本破坏兼容性,您可能需要升级Elasticsearch。 更新 Elasticsearch 不在 GitLab 支持范围内

获取支持

如果出现问题:

  • 复制任何错误并收集任何日志以便以后分析,然后回滚到最后一个工作版本。 您可以使用以下工具帮助您收集数据:
    • 如果您使用 Linux 软件包或 Docker 安装了 GitLab,请使用 gitlabsos
    • 如果您使用 Helm Charts 安装了 GitLab,请使用 kubesos

获取支持:

相关主题