极狐GitLab Runner

  • Tier: 基础版,专业版,旗舰版
  • Offering: JihuLab.com,私有化部署

极狐GitLab Runner 是一款应用程序,与极狐GitLab CI/CD 协同工作以在流水线中运行作业。

使用私有化部署的 runner#

  • Tier: 基础版,专业版,旗舰版
  • Offering: JihuLab.com,私有化部署

私有化部署的 runner 是指您在自己基础设施中安装、配置和管理的极狐GitLab Runner 实例。您可以在所有极狐GitLab 安装中安装并注册私有化部署的 runner。

与由极狐GitLab 托管和管理的 极狐GitLab-hosted runners 不同,您对私有化部署的 runner 拥有完全的控制权。

扩展一组 runner#

当您的组织扩展到拥有一组 runner 时,您应该规划如何监控和调整这些 runner 的性能

极狐GitLab Runner 版本#

出于兼容性原因,极狐GitLab Runner 的 major.minor 版本应与极狐GitLab 的 major 和 minor 版本保持同步。较旧的 runner 可能仍然可以与较新的极狐GitLab 版本一起使用,反之亦然。然而,如果存在版本差异,某些功能可能不可用或无法正常工作。

在小版本更新之间保证向后兼容。然而,极狐GitLab 的小版本更新有时可能会引入新功能,这些功能要求极狐GitLab Runner 处于相同的小版本。

极狐GitLab Runner 15.0 引入了一项更改到注册 API 请求格式。它阻止了极狐GitLab Runner 与低于 14.8 的极狐GitLab 版本通信。您必须使用适合极狐GitLab 版本的 Runner 版本,或者升级极狐GitLab 应用程序。

如果您托管自己的 runner 但在 JihuLab.com 上托管您的代码库,请保持极狐GitLab Runner 更新到最新版本,因为 JihuLab.com 是持续更新的。

Runner 注册#

安装应用程序后,您需要注册单个 runner。Runner 是执行来自极狐GitLab 的 CI/CD 作业的代理。

当您注册一个 runner 时,您是在设置您的极狐GitLab 实例与安装极狐GitLab Runner 的计算机之间的通信。

Runner 通常在您安装极狐GitLab Runner 的同一台机器上处理作业。但是,您也可以在容器中、Kubernetes 集群中或云中的自动扩展实例中运行作业。

runner#

注册 runner 时,您必须选择一个runner。

一个 runner 决定了每个作业运行的环境。

例如:

  • 如果您希望 CI/CD 作业运行 PowerShell 命令,您可能会在 Windows 服务器上安装极狐GitLab Runner,然后注册一个使用 shell runner的 runner。
  • 如果您希望 CI/CD 作业在自定义 Docker 容器中运行命令,您可能会在 Linux 服务器上安装极狐GitLab Runner,并注册一个使用 Docker runner的 runner。

这些只是可能配置的一小部分。您可以在虚拟机上安装极狐GitLab Runner,并让它使用另一台虚拟机作为runner。

当您在 Docker 容器中安装极狐GitLab Runner 并选择 Docker runner 来运行作业时,它有时被称为“Docker-in-Docker”配置。

在极狐GitLab UI 中谁可以访问 runner#

在注册 runner 之前,您应该确定是否让极狐GitLab 中的所有人都可以访问它,还是限制在特定的极狐GitLab 群组或项目中。

根据您希望谁可以访问,有三种类型的 runner:

runner 的范围在注册过程中定义。这是 runner 知道它可以用于哪些项目的方式。

标签#

注册 runner 时,您可以为其添加标签

当 CI/CD 作业运行时,它通过查看分配的标签来知道使用哪个 runner。标签是作业过滤可用 runner 列表的唯一方式。

例如,如果一个 runner 有 ruby 标签,您可以将以下代码添加到项目的 .gitlab-ci.yml 文件中:

yaml
job: tags: - ruby

当作业运行时,它将使用带有 ruby 标签的 runner。

配置 runner#

您可以通过编辑 config.toml 文件来配置 runner。这是在 runner 安装过程中安装的文件。

在这个文件中,您可以编辑特定 runner 或所有 runner 的设置。

您可以指定日志记录和缓存等设置。您可以设置并发、内存、CPU 限制等。

监控 runner#

您可以使用 Prometheus 来监控 runner。您可以查看当前运行的作业数量以及 runner 使用了多少 CPU。

使用 runner 运行作业#

配置好并为您的项目提供 runner 后,您的 CI/CD 作业 可以使用 runner。

功能#

极狐GitLab Runner 具有以下功能。

  • 同时运行多个作业。
  • 为多个服务器使用多个令牌(甚至每个项目)。
  • 限制每个令牌的并发作业数量。
  • 作业可以运行:
    • 本地。
    • 使用 Docker 容器。
    • 使用 Docker 容器并通过 SSH 执行作业。
    • 使用具有不同云和虚拟化管理程序自动扩展的 Docker 容器。
    • 连接到远程 SSH 服务器。
  • 由 Go 编写,并作为单个二进制文件分发,无需其他要求。
  • 支持 Bash、PowerShell Core 和 Windows PowerShell。
  • 适用于 GNU/Linux、macOS 和 Windows(几乎可以在任何可以运行 Docker 的地方)。
  • 允许自定义作业运行环境。
  • 自动配置重新加载无需重启。
  • 易于使用的设置,支持 Docker、Docker-SSH、Parallels 或 SSH 运行环境。
  • 启用 Docker 容器的缓存。
  • 作为 GNU/Linux、macOS 和 Windows 的服务轻松安装。
  • 嵌入式 Prometheus 指标 HTTP 服务器。
  • 裁判工人监控并将 Prometheus 指标和其他特定于作业的数据传递到极狐GitLab。

Runner 执行流程#

此图显示了如何注册 runner 以及如何请求和处理作业。它还显示了哪些操作使用了注册、认证,以及作业令牌

Rendering chart...

术语表#

此术语表提供了与极狐GitLab Runner 相关的术语定义。

  • 极狐GitLab Runner:您安装的应用程序,在目标计算平台上执行极狐GitLab CI 作业。
  • runner 配置config.toml 中的单个 [[runner]] 条目,在 UI 中显示为一个 runner
  • runner 管理器:读取 config.toml 并同时运行所有 runner 配置的进程。
  • runner:在选定机器上执行作业的进程。根据runner类型,这台机器可以是 runner 管理器本地的(shelldocker runner)或由自动扩展程序创建的远程机器(docker-autoscalerkubernetes)。
  • 机器:runner 操作的虚拟机(VM)或 pod。极狐GitLab Runner 自动生成唯一的、持久的机器 ID,以便在多个机器具有相同 runner 配置时,作业可以分别路由,但 runner 配置在 UI 中分组。

故障排除#

了解如何排除常见问题。