refactor: separate workload class from placement driver
test / shell (pull_request) Successful in 28s
test / python (pull_request) Successful in 59s
test / go (pull_request) Successful in 3m35s

This commit is contained in:
2026-09-25 16:48:32 +00:00
parent 162f742880
commit 897d327a26
21 changed files with 305 additions and 205 deletions
+8 -5
View File
@@ -2,19 +2,22 @@
## 对 workflow 的接口
Runner 只向 workflow 暴露两个执行环境:
Runner 将执行环境的能力类型与实现 driver 分开声明:
```yaml
runs-on: [self-hosted, pod]
runs-on: [self-hosted, container, kubernetes]
```
```yaml
runs-on: [self-hosted, vm]
runs-on: [self-hosted, vm, opensandbox]
```
- `self-hosted` 是固定前缀。
- `pod` 表示一次性 Kubernetes Pod,承担常规 CI、镜像构建和 kind 等任务。
- `vm` 表示一次性 microVM,承担需要独立内核、KVM、systemd 或更强隔离的任务。
- `container`、`vm` 是 workload class;`kubernetes`、`opensandbox` 是 placement driver。
- 当前支持 `container+kubernetes` 和 `vm+opensandbox`。旧 `pod` 与 `vm` 标签分别是
两个组合的严格兼容别名,显式指定 driver 后不得因容量或故障回退到另一 driver。
- container 承担常规 CI、镜像构建和 kind 等任务;VM 承担需要独立内核、KVM、
systemd 或更强隔离的任务。
执行后端是基础设施选择,不是权限角色。workflow 不需要额外声明由 controller
维护的 role 或权限 label。