执行器
极狐GitLab Runner 执行很多可以在不同场景下运行构建的执行器。
如果您不知道如何选择,请阅读选择执行器部分。
访问兼容性表格了解每个执行器的作用以及不支持的内容。
极狐GitLab Runner 提供了以下执行器:
- SSH
- Shell
- Parallels
- VirtualBox
- Docker
- Docker Autoscaler
- Docker Machine (auto-scaling)
- Kubernetes
- Instance
- Custom
以上执行器列表已经锁定,我们不再发展或接受新执行器。请查看 CONTRIBUTION.md 了解更多内容。
非 Docker 执行器的先决条件
不依赖 helper 镜像的执行器需要在目标机器和 PATH
中安装 Git。始终使用最新可用版本的 Git。
如果目标机器上安装了 Git LFS,极狐GitLab Runner 则使用 git lfs
命令。确保 Git LFS 在极狐GitLab Runner 使用这些执行器的任何系统上都是最新的。
请务必为使用 git lfs install
执行极狐GitLab Runner 命令的用户初始化 Git LFS。您可以使用 git lfs install --system
在整个系统上初始化 Git LFS。
当您开启了 FF_GIT_URLS_WITHOUT_TOKENS 后,不要通过 Git 凭据帮助器来跨构建缓存 Git 凭据。如果您缓存了凭据,CI_JOB_TOKEN
可能就会在并发或者连续构建中被共享,从而导致认证错误或构建失败。
选择执行器
执行器支持不同的构建项目的平台和方法论。 以下表格展示了每个执行器的关键事实,帮助您选择要使用的执行器。
执行器 | SSH | Shell | VirtualBox | Parallels | Docker | Kubernetes | 自定义 |
---|---|---|---|---|---|---|---|
为每个构建清理构建环境 | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | 有条件的(4) |
重用之前的克隆(如果有) | ✓ | ✓ | ✗ | ✗ | ✓ | ✗ | 有条件的(4) |
保护 Runner 文件系统访问(5) | ✓ | ✗ | ✓ | ✓ | ✓ | ✓ | 有条件的 |
迁移 Runner 机器 | ✗ | ✗ | 部分 | 部分 | ✓ | ✓ | ✓ |
并发构建的零配置支持 | ✗ | ✗ (1) | ✓ | ✓ | ✓ | ✓ | 有条件的(4) |
复杂构建环境 | ✗ | ✗ (2) | ✓ (3) | ✓ (3) | ✓ | ✓ | ✓ |
修复构建问题 | 简单 | 简单 | 困难 | 困难 | 适中 | 适中 | 适中 |
- 如果构建使用安装在构建机器上的服务,这虽然是可能发生的情况,但很容易带来问题。
- 它要求手动安装所有依赖项。
- 比如使用 Vagrant。
- 取决于您部署的环境类型。它可以在构建之间完全隔离或共享。
- 当 Runner 的文件系统访问不受保护,作业可以访问全部系统,包括 Runner 的令牌和其他作业的缓存和代码。 标有 ✓ 的执行器默认不允许 Runner 访问文件系统。 然而,安全缺陷或特定配置可以允许作业脱离容器,访问托管 Runner 的文件系统。
Shell 执行器
Shell 是最简单的执行器。您的构建所需的所有必须依赖项都需要手动安装在极狐GitLab Runner 所安装的机器上。
虚拟机执行器(VirtualBox / Parallels)
这种类型的执行器允许您使用已经创建的虚拟机,它被克隆且用于运行构建。我们提供两个完整的系统虚拟化选项:VirtualBox 和 Parallels。如果您想在不同操作系统上运行构建,它们很有用,因为它允许在 Windows、Linux、macOS 或 FreeBSD 上创建虚拟机,然后极狐GitLab Runner 连接虚拟机并在上面运行构建。它可以降低基础设施的成本。
Docker 执行器
使用 Docker 是个很好的选择,因为它允许使用简单的依赖项管理(所有构建项目所需的依赖项都可以放到 Docker 镜像里)生成干净的构建环境。 Docker 执行器允许您很容易地使用依赖的服务, 例如 MySQL,创建构建环境。
Docker Machine 执行器
Docker Machine 是特殊版本的支持弹性伸缩的 Docker 执行器。 它类似正常的 Docker 执行器, 但由 Docker Machine 按需创建构建主机。
Kubernetes 执行器
Kubernetes 执行器允许您使用您构建现存的 Kubernetes 集群。 执行器会调用 Kubernetes 集群 API 并为每个极狐GitLab CI 作业创建新的 Pod(带有构建容器和服务容器)。
SSH 执行器
SSH 执行器是为执行器介绍完整性而添加进来的,它是所有执行器中最不受支持的一个。 它使极狐GitLab Runner 连接到外部服务器并运行构建。机构有一些使用 SSH 执行器的成功案例,但是通常我们推荐您使用其他类型的执行器。
自定义执行器
自定义执行器允许您指定您自己的执行环境。当极狐GitLab Runner 不提供执行器(例如,LXC 容器),您可以向极狐GitLab Runner 提供您自己的可执行文件,用以部署和清理任何您想使用的环境。
兼容性表格
下表是不同执行器所支持的功能:
执行器 | SSH | Shell | VirtualBox | Parallels | Docker | Kubernetes | 自定义 |
---|---|---|---|---|---|---|---|
安全变量 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
.gitlab-ci.yml :镜像 |
✗ | ✗ | ✓ (1) | ✓ (1) | ✓ | ✓ | ✓ (通过 $CUSTOM_ENV_CI_JOB_IMAGE ) |
.gitlab-ci.yml :服务 |
✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
.gitlab-ci.yml :缓存 |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
.gitlab-ci.yml :产物 |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
在阶段间传递产物 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
使用极狐GitLab 容器镜像库私有镜像 | 空 | 空 | 空 | 空 | ✓ | ✓ | 空 |
交互式网页终端 | ✗ | ✓ (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 所支持的交互式网页终端系统:
Shells | Bash | PowerShell Desktop | PowerShell Core | Windows Batch(废弃) |
---|---|---|---|---|
Windows | ✗ | ✗ | ✗ | ✗ |
Linux | ✓ | ✗ | ✗ | ✗ |
macOS | ✓ | ✗ | ✗ | ✗ |
FreeBSD | ✓ | ✗ | ✗ | ✗ |