执行器
- Tier: 基础版,专业版,旗舰版
- Offering: JihuLab.com,私有化部署
极狐GitLab Runner 实现了不同的执行器,可以在不同的环境中运行构建。
如果您不确定选择哪个执行器,请参阅选择执行器。
有关每个执行器支持的功能的更多信息,请参阅兼容性图表。
极狐GitLab Runner 提供以下执行器:
- SSH
- Shell
- Parallels
- VirtualBox
- Docker
- Docker Autoscaler
- Docker Machine (auto-scaling)
- Kubernetes
- 实例
- 自定义
这些执行器已被锁定,我们不再开发或接受新的执行器。
非 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 凭证助手中,如果安装并配置了这样的助手来缓存凭证:
- 当 FF_GIT_URLS_WITHOUT_TOKENS 为 false 时,最后使用的 CI_JOB_TOKEN 存储在预安装的 Git 凭证助手中。
- 当 FF_GIT_URLS_WITHOUT_TOKENS 为 true 时,CI_JOB_TOKEN 从未存储或缓存到任何预安装的 Git 凭证助手中。
选择执行器
这些执行器支持不同的平台和方法来构建项目。下表显示了每个执行器的关键事实,可以帮助您决定使用哪个执行器。
| 执行器 | SSH | Shell | VirtualBox | Parallels | Docker | Docker Autoscaler | 实例 | Kubernetes | 自定义 |
|---|---|---|---|---|---|---|---|---|---|
| 每次构建都提供干净的构建环境 | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | 条件支持 4 | ✓ | 条件支持 4 |
| 存在时可复用之前的克隆 | ✓ | ✓ | ✗ | ✗ | ✓ | ✓ | 条件支持 4 | ✓ 6 | 条件支持 4 |
| Runner 文件系统访问受保护 5 | ✓ | ✗ | ✓ | ✓ | ✓ | ✓ | ✗ | ✓ | 条件支持 |
| 迁移 runner 机器 | ✗ | ✗ | 部分支持 | 部分支持 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 并发构建零配置支持 | ✗ | ✗ 1 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | 条件支持 4 |
| 复杂的构建环境 | ✗ | ✗ 2 | ✓ 3 | ✓ 3 | ✓ | ✓ | ✗ 2 | ✓ | ✓ |
| 构建问题调试 | 简单 | 简单 | 困难 | 困难 | 一般 | 一般 | 一般 | 一般 | 一般 |
脚注:
- 如果构建使用安装在构建机器上的服务,选择执行器是可能的,但有问题。
- 需要手动安装依赖项。
- 例如,使用 Vagrant。
- 取决于您正在配置的环境。可以完全隔离或在构建之间共享。
- 当 runner 的文件系统访问未受保护时,作业可以访问整个系统,包括 runner 的 token 和其他作业的缓存和代码。标记为 ✓ 的执行器默认不允许 runner 访问文件系统。然而,安全漏洞或某些配置可能会允许作业突破其容器并访问托管 runner 的文件系统。
- 需要 持久的每并发构建卷 配置。
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 容器)时,它允许您使用自定义可执行文件来配置和清理环境。
兼容性图表
不同执行器支持的功能:
| 执行器 | SSH | Shell | VirtualBox | Parallels | Docker | Docker Autoscaler | Instance | Kubernetes | Custom(自定义) |
|---|---|---|---|---|---|---|---|---|---|
| 安全变量(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) | ✗ | ✗ | ✓ | ✗ | ✗ | ✓ | ✗ |
- 在极狐GitLab Runner 14.2 中添加了支持。有关更多详细信息,请参阅覆盖基础 VM 镜像部分。
不同 shell 支持的系统:
| Shells | Bash | PowerShell Desktop | PowerShell Core | Windows Batch(已弃用) |
|---|---|---|---|---|
| Windows | ✗ (4) | ✓ (3) | ✓ | ✓ (2) |
| Linux | ✓ (1) | ✗ | ✓ | ✗ |
| macOS | ✓ (1) | ✗ | ✓ | ✗ |
| FreeBSD | ✓ (1) | ✗ | ✗ | ✗ |
- 默认 shell。
- 已弃用。如果未指定 shell 则为默认 shell。
- 注册新 runner 时的默认 shell。
- Windows 上不支持 Bash shell。
不同 shell 支持的交互式 Web 终端的系统:
| Shells | Bash | PowerShell Desktop | PowerShell Core | Windows Batch(已弃用) |
|---|---|---|---|---|
| Windows | ✗ | ✗ | ✗ | ✗ |
| Linux | ✓ | ✗ | ✗ | ✗ |
| macOS | ✓ | ✗ | ✗ | ✗ |
| FreeBSD | ✓ | ✗ | ✗ | ✗ |
以下图表显示了根据您的操作系统和平台选择哪个执行器:
Rendering chart...