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

GitLab Shell 的流程

发布新版本

GitLab Shell 通过 Git 标签进行版本控制,Rails 应用使用的版本存储在 GITLAB_SHELL_VERSION 中。

每个版本都有一个原始版本和一个标签版本:

  • 原始版本是版本号。例如,15.2.8
  • 标签版本是在原始版本前加上 v 的版本。例如,v15.2.8

要发布新版本的 GitLab Shell 并使其可用于 Rails 应用:

  1. 创建一个合并请求,使用标签版本更新 CHANGELOG,并使用原始版本更新 VERSION 文件。

  2. 请维护者审查并合并该合并请求。如果您已经是维护者,则不需要另一位维护者审查。

  3. 添加一个带有标签版本的新 Git 标签。

  4. 将 Rails 应用中的 GITLAB_SHELL_VERSION 更新为原始版本。

    这可以作为单独的合并请求完成,也可以在使用最新 GitLab Shell 变更的合并请求中完成。

安全发布

GitLab Shell 包含在我们为 GitLab 创建的包中。每个 GitLab 版本都在 GITLAB_SHELL_VERSION 文件中指定了它使用的 GitLab Shell 版本。由于此规范,GitLab Shell 中的安全修复与 GitLab 补丁发布 工作流程紧密耦合。

对于 GitLab Shell 中的安全修复,需要两组合并请求:

  1. 修复本身,在 gitlab-org/security/gitlab-shell 仓库中,以及其到先前版本的 GitLab Shell 的向后移植。
  2. gitlab-org/security/gitlab 仓库中,更改包含在 GitLab 补丁发布中的 GitLab Shell 版本的合并请求。

第一步可以是创建一个合并请求,修复针对 gitlab-org/security/gitlab-shell 中的 main 分支。当合并请求被维护者批准后,必须创建针对前 3 个版本的 GitLab Shell 的向后移植。这些版本的稳定分支可能不存在,所以请随时要求维护者创建它们。稳定分支必须从 GitLab Shell 标签或前 3 个 GitLab 发布使用的版本创建。

要找出特定 GitLab 稳定版本上使用的 GitLab Shell 版本,请运行此命令,将 13-9-stable-ee 替换为您感兴趣的版本。这些命令显示了 13.9 版本 GitLab 使用的版本:

git fetch security 13-9-stable-ee
git show refs/remotes/security/13-9-stable-ee:GITLAB_SHELL_VERSION

接近 GitLab 补丁发布时,维护者应该合并修复和向后移植,并切出所有必要的 GitLab Shell 版本。这允许为 gitlab-org/security/gitlab 更新 GITLAB_SHELL_VERSION。GitLab 合并请求由通用的 GitLab 补丁发布流程处理。

补丁发布完成后,GitLab Shell 维护者负责将标签和 main 同步到 gitlab-org/gitlab-shell 仓库。