执行器
Tier: 基础版,专业版,旗舰版
Offering: JihuLab.com,私有化部署
极狐GitLab Runner 实现了不同的执行器,可用于在不同的环境中运行您的构建:
其他执行器也可用,但已不在积极的功能开发中。它们会收到关键安全更新,但不会获得新功能。
某些功能需要使用 fleeting的 Runner。Docker 自动扩缩器 和实例执行器使用了 fleeting。您应迁移到这些执行器之一,以充分利用 极狐GitLab Runner 的全部能力。
如果您不确定选择哪个执行器,请参阅选择执行器。
有关每个执行器支持的功能的更多信息,请参阅兼容性图表。
这些执行器已锁定,我们不再开发或接受新的执行器。有关更多信息,请参阅贡献新的执行器。
选择执行器
执行器支持不同的平台和构建项目的方法。下图展示了根据您的操作系统和平台应选择哪个执行器:
Rendering chart...
SSH 执行器处于维护模式。它会收到关键安全更新,但没有计划新功能。 此外,它也是支持最少的执行器之一。对于基于本地 shell 的构建, 请考虑改用 Shell 执行器。
下表显示了每个执行器的关键事实,可帮助您决定使用哪个执行器:
SSH、Shell、VirtualBox、Parallels 和自定义执行器处于维护模式。 它们会收到关键安全更新,但没有计划新功能。
Docker 执行器
Docker 执行器通过容器提供干净的构建环境。依赖管理简单直接,所有依赖都打包在 Docker 镜像中。此执行器需要在 Runner 主机上安装 Docker。
此执行器支持额外的服务,如 MySQL。它还支持 Podman 作为替代容器运行时。
此执行器维护一致、隔离的构建环境。
Docker 自动扩缩执行器
Docker 自动扩缩执行器是一个支持自动扩缩的 Docker 执行器,它按需创建实例,以 容纳 Runner Manager 处理的作业。它封装了 Docker 执行器,因此所有 Docker 执行器的选项和功能都受支持。
Docker 自动扩缩器使用 fleeting 插件进行自动扩缩。Fleeting 是对一组自动扩缩实例的抽象,它使用支持云提供商的插件,如 Google Cloud、AWS 和 Azure。此执行器特别适合具有动态工作负载需求的环境。
实例执行器
实例执行器是一个支持自动扩缩的执行器,它按需创建实例,以容纳 Runner Manager 处理的预期作业量。
此执行器和相关的 Docker 自动扩缩执行器是新的自动扩缩执行器,它们与极狐GitLab Runner 的 Fleeting 和 Taskscaler 技术协同工作。
实例执行器也使用 fleeting 插件进行自动扩缩。
当作业需要完全访问主机实例、操作系统和附加设备时,您可以使用实例执行器。实例执行器也可以配置为容纳单租户和多租户作业。
Kubernetes 执行器
您可以使用 Kubernetes 执行器将现有的 Kubernetes 集群用于构建。该执行器调用 Kubernetes 集群 API,并为每个极狐GitLab CI/CD 作业创建一个新的 Pod(包含一个构建容器和服务容器)。此执行器特别适合云原生环境,提供卓越的可扩展性和资源利用率。
处于维护模式的执行器
这些执行器会收到关键安全更新,但没有计划新功能:
兼容性图表
不同执行器支持的功能。
SSH、Shell、VirtualBox、Parallels 和自定义执行器处于维护模式。 它们会收到关键安全更新,但没有计划新功能。
| 执行器 | Docker | Docker 自动扩缩器 | 实例 | Kubernetes | SSH | Shell | VirtualBox | Parallels | 自定义 |
|---|---|---|---|---|---|---|---|---|---|
| 安全变量 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| .gitlab-ci.yml: image | ✓ | ✓ | ✗ | ✓ | ✗ | ✗ | ✓7 | ✓7 | ✓(通过使用 $CUSTOM_ENV_CI_JOB_IMAGE) |
| .gitlab-ci.yml: services | ✓ | ✓ | ✗ | ✓ | ✗ | ✗ | ✗ | ✗ | ✓ |
| .gitlab-ci.yml: cache | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| .gitlab-ci.yml: artifacts | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 在阶段之间传递产物 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 使用极狐GitLab 容器镜像仓库私有镜像 | ✓ | ✓ | 不适用 | ✓ | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 |
| 交互式 Web 终端 | ✓ | ✗ | ✗ | ✓ | ✗ | ✓ | ✗ | ✗ | ✗ |
不同 shell 支持的系统:
不同 shell 对交互式 Web 终端支持的系统:
| Shells | Bash | PowerShell Desktop | PowerShell Core | sh |
|---|---|---|---|---|
| Windows | ✗ | ✓ | ✓ | ✗ |
| Linux | ✓ | ✗ | ✓ | ✓ |
| macOS | ✓ | ✗ | ✓ | ✓ |
| FreeBSD | ✓ | ✗ | ✗ | ✓ |
非 Docker 执行器的 Git 要求
不依赖辅助镜像的执行器需要在目标机器上安装 Git,并且 Git 需位于 PATH中。请始终使用最新可用的 Git 版本。
如果目标机器上安装了 Git LFS,极狐GitLab Runner 会使用 git lfs 命令。请确保在极狐GitLab Runner 使用这些执行器的任何系统上,Git LFS 都是最新的。
请务必为执行极狐GitLab Runner 命令的用户使用 git lfs install 初始化 Git LFS。您可以使用 git lfs install --system 在整个系统上初始化 Git LFS。
为了对与极狐GitLab 实例的 Git 交互进行身份验证,极狐GitLab Runner 使用 CI_JOB_TOKEN。根据 FF_GIT_URLS_WITHOUT_TOKENS 设置,最后使用的凭据可能会缓存在预安装的 Git 凭据助手中(例如 Git credential manager), 前提是已安装并配置了此类助手来缓存凭据:
- 当 FF_GIT_URLS_WITHOUT_TOKENS 为 false 时,最后使用的 CI_JOB_TOKEN 会存储在预安装的 Git 凭据助手中。
- 当 FF_GIT_URLS_WITHOUT_TOKENS 为 true 时,CI_JOB_TOKEN 永远不会存储或缓存在任何预安装的 Git 凭据助手中。
Footnotes
-
当 Runner 的文件系统访问不受保护时,作业可以访问整个系统, 包括 Runner 的令牌以及其他作业的缓存和代码。 标记为 ✓ 的执行器默认不允许 Runner 访问文件系统。 但是,安全缺陷或某些配置可能允许作业 突破其容器并访问托管 Runner 的文件系统。 ↩
-
如果构建使用构建机器上安装的服务,则可以选择执行器,但会存在问题。 ↩
-
支持在极狐GitLab Runner 14.2 中添加。 有关更多详细信息,请参阅覆盖基础 VM 镜像部分。 ↩ ↩2
-
Windows 不支持 Bash shell。 ↩
-
使用 docker-windows 和 kubernetes 执行器的作业的默认 shell。 ↩
-
Runner 注册以及使用 shell 执行器的作业的默认 shell。 ↩
-
使用 shell 执行器的作业的默认 shell。 ↩