极狐GitLab Runner

极狐GitLab Runner 是在流水线中运行作业的应用,与极狐GitLab CI/CD 配合运作。

使用 JihuLab.com SaaS Runner#

如果您使用 JihuLab.com,则可以在极狐GitLab 托管的 SaaS Runner 上运行 CI/CD 作业。 这些 Runner 由极狐GitLab 管理并与 JihuLab.com 完全集成。默认情况下,所有项目都启用这些 Runner。 如果您拥有项目的所有者角色,您可以禁用 Runner

使用私有化部署的 Runner#

您也可以安装极狐GitLab Runner 并在 JihuLab.com 或您的实例上注册您自己的 Runner。要使用私有化部署的 Runner,您需要在您拥有或管理的基础设施上安装极狐GitLab Runner。

伸缩 Runner 队列#

当您的组织扩展到拥有 Runner 队列时,您应该计划如何监控和调整这些 Runner 的性能

极狐GitLab Runner 版本#

由于兼容性原因,极狐GitLab Runner 的 主版本.小版本 应和极狐GitLab 的 主版本.小版本 保持同步。老版本的极狐GitLab Runner 可能适用于新版本的极狐 GitLab,反之亦然。但是如果存在版本差异,功能特性可能不可用或无法正常工作。

NOTE: 极狐GitLab Runner 15.0 向注册 API 请求格式引入了一个变更。它能防止极狐GitLab Runner 与低于 14.8 的极狐GitLab 实例通信。您必须使用与极狐GitLab 版本匹配的 Runner 版本,或者升级极狐GitLab 应用程序。

在小版本更新之间保证向后兼容。但是有时小版本更新会引入要求极狐GitLab Runner 处于相同版本的新特性功能。

Runner 注册#

在您安装应用后,您注册了个人的 Runner。Runner 是运行来自极狐GitLab 的 CI/CD 作业的代理。

当您注册 Runner 时,您在极狐GitLab 实例和安装了极狐GitLab Runner 的机器之间建立通信。

Runner 通常在您安装了极狐GitLab Runner 的机器上处理作业。除此之外,您也可以在容器中,在 Kubernetes 集群中,或在云端的弹性伸缩主机上运行 Runner 处理作业。

执行器#

当您注册 Runner 时,您必须选择一个执行器。

执行器决定每个作业运行的环境。

例如:

  • 如果您想要 CI/CD 作业运行 Powershell 命令,您可以在 Windows 服务器上安装极狐GitLab Runner,然后注册使用 Shell 执行器的 Runner。
  • 如果您想要 CI/CD 作业在自定义 Docker 容器中运行命令,您可以在 Linux 服务器上安装极狐GitLab Runner,然后注册使用 Docker 执行器的 Runner。

以上只是几种可能的配置。您可以在虚拟机上安装极狐GitLab Runner,并让它使用另一个虚拟机作为执行器。

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

谁有权限在 UI 中访问 Runner#

在您注册 Runner 之前,您应该确定是否每个人应该有权访问。或者您想要限制其适用于指定的群组或项目。

根据您想要允许访问的用户,分为三种类型的 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。 您可以查看例如正在运行的作业数量,和正在使用的 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 configurationconfig.toml 文件中的 [[runner]] 入口,它们会被展示在 UI 上的 runner 部分。
  • Runner Manager:一种 Runner,可以创建多个用于弹性伸缩的 Runner。具体到使用的执行器类型。
  • Runner:在被选中的机器上执行作业的进程。取决于执行器的类型,机器可以是本地的(shelldocker 执行器),也可以是由自动扩缩容创建的远程机器(docker-autoscalerkubernetes 执行器)。
  • 机器:Runner 运行所需的虚拟机或 pod。极狐GitLab Runner 会自动生成一个独一无二、永久的机器 ID,以便当多个机器被赋予相同的 Runner 配置时,作业可以单独路由,并且 Runner 配置可以在 UI 中被分组。

Troubleshooting#

学习常见问题的故障排查手段。