执行器
执行器(Executor)决定运行器在哪里启动任务进程。运行器仍然轮询服务器、 接收任务并回传日志;改变的只是 Ansible、Terraform 或 shell 进程运行的位置。
| 执行器 | runner.executor.type | 任务运行位置 | 版本 |
|---|---|---|---|
| 本地 | local(默认) | 运行器主机上的子进程,使用运行器的文件、工具和 PATH。 | Community |
| Docker | docker | Docker 守护进程上的新容器,任务结束后删除。 | Pro |
| Kubernetes | k8s | Kubernetes 命名空间中的新 Pod,任务结束后删除。 | Enterprise |
执行器是运行器的设置,而不是服务器或模板的设置。Semaphore 服务器本身始终在本地 运行任务;要在容器中运行任务,请启动一个运行器,并通过运行器 标签将模板路由到它。
选择执行器
| 你的需求 | 使用 |
|---|---|
| 工具安装在一台机器上、需要访问其文件、工作流输出 | 本地 |
| 每个任务一个干净的环境、每个模板不同的工具链,部署在一台或几台主机上 | Docker |
| 任务在集群中调度、使用 Kubernetes RBAC 和 Secrets、无需 Docker socket | Kubernetes |
设置执行器
在运行器配置文件的 runner 部分中添加 executor 块:
{
"web_host": "https://semaphore.example.com",
"runner": {
"token_file": "/var/lib/semaphore/runner_token.txt",
"executor": {
"type": "docker"
}
}
}
或者设置环境变量:
SEMAPHORE_RUNNER_EXECUTOR_TYPE=docker # or k8s
每个选项都有对应的环境变量;完整列表见 Docker 和 Kubernetes 页面。更改执行器后请重启运行器。
信息
容器执行器属于运行器的 Pro 构建。请使用 semaphoreui/runner 镜像或官方
semaphore 二进制文件。semaphoreui/runner-community 镜像不包含它们,并会在启动时
记录 docker executor is only available in the proprietary build。