软件包
由 omnibus-gitlab
持续集成流水线构建的软件包具有 <build_version>-<build_iteration>
格式的版本字符串。流水线通常生成三种类型的软件包:
- 功能分支构建
- 每夜构建
- 标记发布构建
{{< alert type=”note” >}}
版本字符串的 build_iteration
部分传达了特定含义,并有助于计算 build_version
。接下来的部分是基于这一点编写的,因为必须首先理解 build_iteration
,即使它在版本字符串中是最后的。
{{< /alert >}}
构建迭代
当与打包相关的逻辑更改不包含捆绑组件的更改时,版本字符串使用 build_iteration
。
发布类型 | 示例流水线 |
build_iteration 字符串 |
---|---|---|
非标签 | 功能分支、每夜构建 | 0 |
标签 | 发布 |
ce.<OMNIBUS_RELEASE> 或 ee.<OMNIBUS_RELEASE>
|
版本组件 ce 或 ee 指示软件包管理器(如 apt
或 yum
)在软件包版本相同时将企业版软件包视为基础版的升级,因为 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
字符串表示软件包是从常规功能分支构建的。它在字母排序上将其放在稳定分支之后,使软件包管理器如 apt
或 yum
将其视为从稳定版软件包的升级。
每夜构建
对于每夜软件包,版本格式为 <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.0
、13.1.0+ce.0
和 13.1.0+ee.0
,则版本字符串将分别为 13.1.0-rc42.ee.0
、13.1.0-ce.0
和 13.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:nightly
和 gitlab/gitlab-ce:nightly
表示可用的两个版本的镜像引用。
标记发布构建
除了通用命名方案外,由标记发布流水线构建的 Docker 镜像也将被标记为 latest
,并且这两个标签也会被推送到 Dockerhub 仓库。