feat: 重构工作流体系,将命令模式迁移为技能文档

This commit is contained in:
2026-01-21 15:55:57 +08:00
parent 43e138b19e
commit dffa3fae12
18 changed files with 1101 additions and 2099 deletions

View File

@@ -267,6 +267,8 @@ act_runner --version
7. 获取注册 token优先全局
8. 注册并启动 runner
> **提示**:你可以从 [create-runner.md](./create-runner.md) 获取完整的 Bash 脚本。
### 详细创建流程
当运行 `/gitea-create-runner` 命令时,会执行以下步骤:
@@ -640,23 +642,58 @@ log:
level: info
runner:
file: /path/to/.runner
file: /data/.runner # 容器内路径
capacity: 2
timeout: 3h
labels:
- "ubuntu-latest:docker://catthehacker/ubuntu:act-latest"
shutdown_timeout: 30s
insecure: false
fetch_timeout: 5s
fetch_interval: 2s
labels: [] # 通过环境变量设置
cache:
enabled: true
dir: "/path/to/cache"
host: "192.168.0.103" # 主机 IP非 127.0.0.1
port: 9000
dir: "/data/cache" # 容器内缓存目录
host: "host.docker.internal" # 宿主机地址Docker 特殊 DNS
port: 9040 # 缓存服务端口
container:
options: "--platform=linux/amd64" # 容器选项
network: "host" # 网络模式
# 使用 host 网络模式,确保 runner 和 job 容器共处一个网络,以便 cache 能够正常访问
network: "host"
privileged: false
options:
workdir_parent: /data/workspace
valid_volumes: []
docker_host: ""
force_pull: false
host:
workdir_parent: /data/workspace
```
**Docker 容器启动命令**
```bash
docker run -d \
--name "$runner_name" \
--restart always \
--network host \
-v "$runner_dir/config.yaml:/config.yaml" \
-v "$runner_dir/data:/data" \
-v "/var/run/docker.sock:/var/run/docker.sock" \
-e GITEA_INSTANCE_URL="$GITEA_URL" \
-e GITEA_RUNNER_REGISTRATION_TOKEN="$token" \
-e GITEA_RUNNER_NAME="$runner_name" \
-e GITEA_RUNNER_LABELS="ubuntu-latest:docker://node:16-bullseye,ubuntu-22.04:docker://node:16-bullseye,linux:docker://node:16-bullseye" \
gitea/act_runner:latest daemon --config /config.yaml
```
**关键配置说明**
- `--network host`:使用 host 网络模式,确保 runner 和 job 容器共处一个网络,以便 cache 能够正常访问
- `host.docker.internal`Docker 内部 DNS指向宿主机
- 环境变量自动注册:容器启动时自动完成 Runner 注册
- `/var/run/docker.sock`:允许容器内创建兄弟容器执行 jobs
## 多 Runner 缓存共享
### 方案 A: Master-Slave 模式(推荐 2-3 个 runner
@@ -778,6 +815,64 @@ crontab -e
/gitea-list-runners
```
**API 调用详情**
1. **加载配置**
```bash
source ~/.config/gitea/config.env
```
2. **调用 API**
```bash
curl -s -H "Authorization: token $GITEA_TOKEN" \
"${GITEA_URL}/api/v1/admin/actions/runners"
```
3. **响应结构**
```json
{
"runners": [...],
"total_count": 1
}
```
4. **解析每个 Runner**
- `id`: Runner ID
- `name`: Runner 名称
- `status`: 状态("online"/"offline"
- `busy`: 是否忙碌true/false
- `ephemeral`: 是否临时true/false
- `labels`: 标签数组
5. **状态图标**
- 🟢 在线 - `status: "online"`
- 🔴 离线 - `status: "offline"`
- ⚠️ 未知 - 无法确定
6. **输出格式**
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Gitea 全局 Runners
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
服务器: [server_url]
总计: N 个全局 runner
[runner-name]
状态: 🟢/🔴 [在线/离线]
ID: [id]
忙碌: 是/否
临时: 是/否
标签: [comma-separated labels]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
**注意**
- 需要管理员 API Token
- 正确的 API 端点是 `/api/v1/admin/actions/runners`(不是 `/api/v1/admin/runners`
- 使用 `jq` 解析 JSON 响应
### 启动 Runner
```bash