如果您是极狐GitLab 团队成员,您可以访问构建基础设施或访问有权限的同事。您可以利用这些权限来构建软件包。

测试 gitlab-org/gitlab 项目的合并请求

如果您在 gitlab-org/gitlab 项目中有一个合并请求 (MR),您可以使用软件包或 Docker 镜像来测试该 MR。

在您的 MR 上应用 ~"pipeline:run-all-e2e" 标签并运行新的流水线。这将包含在 qa 阶段的 e2e:test-on-omnibus-ee 作业,该作业触发:

  • 一个下游流水线在 omnibus-gitlab QA 镜像,这为您提供一个 Ubuntu 22.04 软件包和一个用于测试的全功能 Docker 镜像。
  • 使用这些产物运行一个 gitlab-qa

测试 omnibus-gitlab 项目的 MR

如果您在 omnibus-gitlab 项目中有一个 MR,您可以使用软件包或 Docker 镜像来测试该 MR。

与极狐GitLab 项目类似,运行于 omnibus-gitlab 中的 MR 的流水线也有手动作业来获取软件包或 Docker 镜像。Trigger:ce-packageTrigger:ee-package 作业构建基础版和企业版软件包以及 Docker 镜像,并进行 QA 运行。

使用极狐GitLab 组件的特定分支或版本

极狐GitLab 主要组件的版本,如极狐GitLab Rails 或 Gitaly,通过以下方式控制:

  • *_VERSION 文件在 omnibus-gitlab 仓库中。
  • 在构建期间存在的 *_VERSION 环境变量。

查看下表以获取更多信息:

文件名 环境变量 描述
VERSION GITLAB_VERSION 控制极狐GitLab Rails 应用的 Git 引用。默认情况下,指向 GitLab-FOSS 仓库的 master 分支。如果您想使用极狐GitLab 仓库,请将环境变量 ee 设置为 true。
GITALY_SERVER_VERSION GITALY_SERVER_VERSION Gitaly 仓库的 Git 引用。
GITLAB_PAGES_VERSION GITLAB_PAGES_VERSION 极狐GitLab Pages 仓库的 Git 引用。
GITLAB_SHELL_VERSION GITLAB_SHELL_VERSION 极狐GitLab Shell 仓库的 Git 引用。
GITLAB_ELASTICSEARCH_INDEXER_VERSION GITLAB_ELASTICSEARCH_INDEXER_VERSION 极狐GitLab Elasticsearch Indexer 仓库的 Git 引用。仅用于企业版构建。
GITLAB_KAS_VERSION GITLAB_KAS_VERSION 极狐GitLab Kubernetes Agent Server 仓库的 Git 引用。

如果您从极狐GitLab MR 运行 e2e:test-on-omnibus 作业,GITLAB_VERSION 环境变量设置为与流水线对应的提交 SHA。其他环境变量,如果未指定,则从其对应的文件中填充并传递给触发的流水线。

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

环境变量优先于 *_VERSION 文件。

{{< /alert >}}

临时指定组件版本

使用以下任一方法临时指定组件版本:

  • 编辑 *_VERSION 文件,提交并推送以启动流水线,但在 MR 标记为准备合并之前还原此更改。我们建议您在 MR 中对此差异打开一个未解决的讨论,以便您记得还原它。

  • .gitlab-ci.yml 文件中设置环境变量,提交并推送以启动流水线,但在 MR 标记为准备合并之前还原此更改。我们建议您在 MR 中对此差异打开一个未解决的讨论,以便您记得还原它。

  • 作为 Git 推送选项 传递环境变量。

    git push <REMOTE> -o ci.variable="<ENV_VAR>=<VALUE>"
    
    # Passing multiple variables
    git push <REMOTE> -o ci.variable="<ENV_VAR_1>=<VALUE_1>" -o ci.variable="<ENV_VAR_2>=<VALUE_2>"
    

    Note: 这仅在您有一些更改需要推送时有效。如果远程已经更新到您的本地分支,则不会创建新的流水线。

  • 手动从 UI 运行流水线,同时指定环境变量。

环境变量被传递到在 QA 镜像中触发的下游流水线中,以便它们在构建期间使用。

您应该使用环境变量而不是更改 *_VERSION 文件,以避免额外的还原步骤。当您需要重复构建 omnibus-gitlab 软件包时,*_VERSION 文件是最有效的,但唯一的变化发生在极狐GitLab 组件中。在这种情况下,当在更改 *_VERSION 文件后运行流水线时,可以重试以构建新的软件包,从上游组件功能分支拉取更改,而不是手动运行新的流水线。

使用极狐GitLab 组件的特定镜像或分叉

Omnibus 构建的大多数软件的仓库来源在 omnibus-gitlab 仓库中的 .custom_sources.yml 文件中。您可以使用环境变量覆盖主要的极狐GitLab 组件。查看下表以了解详细信息:

环境变量 描述
ALTERNATIVE_PRIVATE_TOKEN 如果需要从私有仓库中拉取时使用的访问令牌。
GITLAB_ALTERNATIVE_REPO 极狐GitLab Rails 应用的 Git 仓库位置。
GITLAB_SHELL_ALTERNATIVE_REPO 极狐GitLab Shell 的 Git 仓库位置。
GITLAB_PAGES_ALTERNATIVE_REPO 极狐GitLab Pages 的 Git 仓库位置。
GITALY_SERVER_ALTERNATIVE_REPO Gitaly 的 Git 仓库位置。
GITLAB_ELASTICSEARCH_INDEXER_ALTERNATIVE_REPO 极狐GitLab Elasticsearch Indexer 的 Git 仓库位置。
GITLAB_KAS_ALTERNATIVE_REPO 极狐GitLab Kubernetes Agent Server 的 Git 仓库位置。

为其他操作系统构建软件包

前提条件:

  • 您必须有权限将分支推送到 omnibus-gitlab 发布镜像:https://dev.gitlab.org/gitlab/omnibus-gitlab

使用发布镜像来:

  • 为 Ubuntu 22.04 以外的操作系统构建软件包。
  • 确保能够在所有操作系统上构建包含您更改的软件包。

为其他操作系统构建软件包:

  1. 如上节所述修改 *_VERSION 文件或环境变量(如果需要)。您可能需要在 CI 配置 中设置 ee 环境变量为 true,以便使用极狐GitLab 仓库中的提交而不是 GitLab-FOSS。

  2. 将您的分支推送到发布镜像并检查流水线:https://dev.gitlab.org/gitlab/omnibus-gitlab/-/pipelines

  3. 流水线为所有支持的操作系统构建软件包和 Docker 镜像。