执行器

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

极狐GitLab Runner 实现了不同的执行器,可以在不同的环境中运行构建。

如果您不确定选择哪个执行器,请参阅选择执行器

有关每个执行器支持的功能的更多信息,请参阅兼容性图表

极狐GitLab Runner 提供以下执行器:

这些执行器已被锁定,我们不再开发或接受新的执行器。

非 Docker 执行器的先决条件#

依赖于助手镜像的执行器需要目标机器上安装 Git 并在 PATH 中。始终使用最新可用版本的 Git。

如果在目标机器上安装了 Git LFS,极狐GitLab Runner 会使用 git lfs 命令。确保在极狐GitLab Runner 使用这些执行器的任何系统上,Git LFS 是最新的。

确保为执行极狐GitLab Runner 命令的用户初始化 Git LFS,使用 git lfs install。您可以使用 git lfs install --system 在整个系统上初始化 Git LFS。

要通过极狐GitLab 实例验证 Git 交互,极狐GitLab Runner 使用 CI_JOB_TOKEN。根据 FF_GIT_URLS_WITHOUT_TOKENS 设置,最后使用的凭证可能会被缓存到预安装的 Git 凭证助手中,如果安装并配置了这样的助手来缓存凭证:

选择执行器#

这些执行器支持不同的平台和方法来构建项目。下表显示了每个执行器的关键事实,可以帮助您决定使用哪个执行器。

执行器SSHShellVirtualBoxParallelsDockerDocker Autoscaler实例Kubernetes自定义
每次构建都提供干净的构建环境条件支持 4条件支持 4
存在时可复用之前的克隆条件支持 46条件支持 4
Runner 文件系统访问受保护 5条件支持
迁移 runner 机器部分支持部分支持
并发构建零配置支持1条件支持 4
复杂的构建环境2332
构建问题调试简单简单困难困难一般一般一般一般一般

脚注:

  1. 如果构建使用安装在构建机器上的服务,选择执行器是可能的,但有问题。
  2. 需要手动安装依赖项。
  3. 例如,使用 Vagrant。
  4. 取决于您正在配置的环境。可以完全隔离或在构建之间共享。
  5. 当 runner 的文件系统访问未受保护时,作业可以访问整个系统,包括 runner 的 token 和其他作业的缓存和代码。标记为 ✓ 的执行器默认不允许 runner 访问文件系统。然而,安全漏洞或某些配置可能会允许作业突破其容器并访问托管 runner 的文件系统。
  6. 需要 持久的每并发构建卷 配置。

Shell 执行器#

Shell 执行器是极狐GitLab Runner 最简单的配置选项。它在安装极狐GitLab Runner 的系统上本地执行作业,要求所有依赖项都手动安装在同一机器上。

此执行器支持 Linux、macOS 和 FreeBSD 操作系统的 Bash,同时为 Windows 环境提供 PowerShell 支持。

虽然适用于依赖项较少的构建,但它只提供作业之间的有限隔离。

Docker 执行器#

Docker 执行器通过容器提供干净的构建环境。依赖管理非常简单,所有依赖项都被打包在 Docker 镜像中。此执行器要求在 Runner 主机上安装 Docker。

此执行器支持其他服务,如 MySQL。它还支持 Podman 作为替代容器运行时。

此执行器保持一致、隔离的构建环境。

Docker Machine 执行器(已弃用)#

此功能在极狐GitLab 17.5 中被弃用,计划在 20.0 中移除。请使用极狐GitLab Runner Autoscaler 代替。

Docker Machine 执行器是一个支持自动缩放的特殊版本的 Docker 执行器。它像典型的 Docker 执行器一样工作,但通过 Docker Machine 创建按需构建主机。这种能力使其在 AWS EC2 等云环境中特别有效,提供出色的隔离和可扩展性以应对可变工作负载。

Docker Autoscaler 执行器#

Docker Autoscaler 执行器是一个启用了自动缩放的 Docker 执行器,它会按需创建实例以容纳 runner 管理器处理的作业。它封装了 Docker 执行器,因此支持所有 Docker 执行器选项和功能。

Docker Autoscaler 使用 fleeting 插件来自动缩放。Fleeting 是一组自动缩放实例的抽象,使用支持云提供商(如 Google Cloud、AWS 和 Azure)的插件。此执行器特别适合具有动态工作负载要求的环境。

Instance 执行器#

Instance 执行器是一个启用了自动缩放的执行器,它会按需创建实例以容纳 runner 管理器处理的预期作业量。

此执行器和相关的 Docker Autoscale 执行器是与极狐GitLab Runner Fleeting 和 Taskscaler 技术结合使用的新自动缩放执行器。

Instance 执行器还使用 fleeting 插件来自动缩放。

当作业需要完全访问主机实例、操作系统和附加设备时,可以使用 Instance 执行器。Instance 执行器还可以配置为容纳单租户和多租户作业。

Kubernetes 执行器#

您可以使用 Kubernetes 执行器来使用现有的 Kubernetes 集群进行构建。执行器调用 Kubernetes 集群 API 并为每个极狐GitLab CI/CD 作业创建一个新 Pod(具有构建容器和服务容器)。此执行器特别适合云原生环境,提供卓越的可扩展性和资源利用率。

SSH 执行器#

SSH 执行器是为了完整性而添加的,但它是支持最少的执行器之一。当您使用 SSH 执行器时,极狐GitLab Runner 连接到外部服务器并在那里运行构建。我们有一些成功案例来自使用此执行器的组织,但通常您应该使用其他类型之一。

Custom 执行器#

您可以使用 Custom 执行器指定自己的执行环境。当极狐GitLab Runner 不提供执行器(例如,Linux 容器)时,它允许您使用自定义可执行文件来配置和清理环境。

兼容性图表#

不同执行器支持的功能:

执行器SSHShellVirtualBoxParallelsDockerDocker AutoscalerInstanceKubernetesCustom(自定义)
安全变量(Secure Variables)
.gitlab-ci.yml: image✓ (1)✓ (1)✓(通过使用 $CUSTOM_ENV_CI_JOB_IMAGE
.gitlab-ci.yml: services
.gitlab-ci.yml: cache
.gitlab-ci.yml: artifacts
阶段间传递 artifacts(产物)
使用 GitLab 容器镜像仓库的私有镜像不适用不适用不适用不适用不适用不适用
交互式 Web 终端✓(UNIX)
  1. 在极狐GitLab Runner 14.2 中添加了支持。有关更多详细信息,请参阅覆盖基础 VM 镜像部分。

不同 shell 支持的系统:

ShellsBashPowerShell DesktopPowerShell CoreWindows Batch(已弃用)
Windows✗ (4)✓ (3)✓ (2)
Linux✓ (1)
macOS✓ (1)
FreeBSD✓ (1)
  1. 默认 shell。
  2. 已弃用。如果未指定 shell 则为默认 shell。
  3. 注册新 runner 时的默认 shell。
  4. Windows 上不支持 Bash shell。

不同 shell 支持的交互式 Web 终端的系统:

ShellsBashPowerShell DesktopPowerShell CoreWindows Batch(已弃用)
Windows
Linux
macOS
FreeBSD

以下图表显示了根据您的操作系统和平台选择哪个执行器:

Rendering chart...