软件包

omnibus-gitlab 持续集成流水线构建的软件包具有 <build_version>-<build_iteration> 格式的版本字符串。流水线通常生成三种类型的软件包:

  1. 功能分支构建
  2. 每夜构建
  3. 标记发布构建

{{< alert type=”note” >}}

版本字符串的 build_iteration 部分传达了特定含义,并有助于计算 build_version。接下来的部分是基于这一点编写的,因为必须首先理解 build_iteration,即使它在版本字符串中是最后的。

{{< /alert >}}

构建迭代

当与打包相关的逻辑更改不包含捆绑组件的更改时,版本字符串使用 build_iteration

发布类型 示例流水线 build_iteration 字符串
非标签 功能分支、每夜构建 0
标签 发布 ce.<OMNIBUS_RELEASE>ee.<OMNIBUS_RELEASE>

版本组件 ceee 指示软件包管理器(如 aptyum)在软件包版本相同时将企业版软件包视为基础版的升级,因为 ee 在字母排序上排在 ce 之后。

OMNIBUS_RELEASE 组件已被弃用,始终设置为 0。历史上,OMNIBUS_RELEASE 表示针对 omnibus-gitlab 的快速错误修复,不涉及极狐GitLab Rails 或其他捆绑组件的更改。这些更新由于对用户的影响,通常需要语义版本更新。因此,OMNIBUS_RELEASE 在实践中并不实用,现在不再相关。

构建版本

版本字符串的构建版本组件根据软件包是 功能分支每夜构建 还是 标记发布 而变化。

常规功能分支构建

对于常规功能分支构建,版本格式为 <latest stable git tag>+rfbranch.<pipeline id>.<omnibus-gitlab SHA>-<build iteration>

如上所述,常规功能分支构建的 build iteration 设置为 0。此类型的示例版本字符串为 13.1.1+rfbranch.159743.eb538eaf-0

+rfbranch 字符串表示软件包是从常规功能分支构建的。它在字母排序上将其放在稳定分支之后,使软件包管理器如 aptyum 将其视为从稳定版软件包的升级。

每夜构建

对于每夜软件包,版本格式为 <latest stable git tag>+rnightly.<pipeline id>.<omnibus-gitlab SHA>-<build iteration>

如上所述,每夜构建的 build iteration 设置为 0。此类型的示例版本字符串为 13.1.1+rnightly.159756.b2b5f05e-0

+rnightly 表示软件包是每夜构建的输出。当软件包管理器按字母顺序比较时,+rnightly 被视为比最新稳定版和 +rfbranch 软件包更高。软件包管理器将始终将每夜软件包视为软件包升级。

标记发布构建

对于标记发布构建,虽然 Git 标签的格式为 <SemVer version>+<build iteration>,但版本字符串遵循 <SemVer version>-<build iteration> 的格式。

例如,如果标签为 13.1.0+rc42.ce.013.1.0+ce.013.1.0+ee.0,则版本字符串将分别为 13.1.0-rc42.ee.013.1.0-ce.013.1.0-ee.0

如上所述,与功能分支和每夜构建不同,这些发布的 build iteration 组件格式为 (ce|ee).0

Docker 镜像

omnibus-gitlab CI 流水线创建的 Docker 镜像基于前一阶段构建的 Ubuntu 软件包。因此,Docker 镜像标签也反映了软件包版本字符串给出的相同信息。由于软件包版本中使用的 + 符号不是镜像标签支持的字符,因此将其替换为 - 以获得 slug。

作为一般规则,Docker 镜像将使用软件包版本的 slug 作为标签。此外,所有 Docker 镜像将被推送到与它们正在构建的主机对应的 Docker 容器注册表。

整个镜像引用的格式为

dev.gitlab.org:5005/gitlab/omnibus-gitlab/gitlab-(ce|ee):<slug of package version>

例如, dev.gitlab.org:5005/gitlab/omnibus-gitlab/gitlab-ce:13.2.1-rfbranch.163015.32ed1c58-0 将是从极狐GitLab CE 软件包构建的 Docker 的镜像标签,版本为 13.2.1+rfbranch.163015.32ed1c58-0

以下是与此一般规则不同的特殊情况。

在 QA 镜像中的触发构建

当在 QA 镜像中触发构建时,作为触发流水线(用于软件包和 QA 运行)的一部分创建的 Docker 镜像,其标签根据触发源决定。如果触发源于 omnibus-gitlab 流水线,镜像标签就是软件包版本的 slug。但如果触发源于极狐GitLab 或 GitLab-FOSS 流水线,镜像标签将被设置为与该流水线对应的提交的 SHA。

这些作业不会发布到 Dockerhub 仓库。

每夜构建

除了通用命名方案外,由计划的每夜流水线构建的 Docker 镜像将被标记为 nightly 标签,并且这两个标签也会被推送到 Dockerhub 仓库。

gitlab/gitlab-ee:nightlygitlab/gitlab-ce:nightly 表示可用的两个版本的镜像引用。

标记发布构建

除了通用命名方案外,由标记发布流水线构建的 Docker 镜像也将被标记为 latest,并且这两个标签也会被推送到 Dockerhub 仓库。