3.5 KiB
3.5 KiB
Gitea Runner 基础设施规范
目标
把 CI runner 从“文档里假定存在”收敛为“可安装、可启动、可验证、可排障”的正式基础设施。
当前已确认的问题不是单个 workflow 命令,而是 runner 基础设施缺少可观测、可管理、可验证的落地形态,导致:
- workflow 可以触发
- run 可以入队
- job 长时间停留在
Waiting to run - 无法快速确认 runner 是否在线、注册、可消费队列
正式约定
安装目录
统一约定 runner 安装根目录:
C:\xiaoxia-ci\act_runner\
目录结构:
C:\xiaoxia-ci\act_runner\
├── act_runner.exe
├── config.yaml
├── .runner
├── data\
├── work\
├── logs\
└── scripts\
├── install-runner.ps1
├── start-runner.ps1
├── stop-runner.ps1
└── check-runner.ps1
启动方式
统一使用 Windows 计划任务或服务化方式 启动,禁止依赖临时终端手工常驻。
最低要求:
- 开机自动启动
- 失败可重启
- 有固定工作目录
- 有固定日志目录
日志目录
C:\xiaoxia-ci\act_runner\logs\
至少保留:
runner.stdout.logrunner.stderr.logrunner.health.log
工作目录
C:\xiaoxia-ci\act_runner\work\
不得把 runner 工作目录放在随机用户临时目录。
配置要求
config.yaml 最低要求
应明确:
- Gitea 实例地址
- runner 名称
- labels
- workdir
- 日志输出位置
- 容器 / shell 执行策略
示例字段(示意,不代表最终 token):
instance:
url: https://api.xiaoxiajianji.com/git
token: CHANGE_ME
runner:
name: xiaoxia-windows-runner
labels:
- windows
- local
- xiaoxia-ci
workdir: C:\xiaoxia-ci\act_runner\work
健康检查标准
必须能通过固定命令验证以下事实:
- runner 进程存在
- runner 配置文件存在
- runner 工作目录存在
- runner 最近日志有心跳/拉取任务痕迹
- Gitea 新 run 不再长期停留在
Waiting to run
推荐检查命令:
powershell -ExecutionPolicy Bypass -File C:\xiaoxia-ci\act_runner\scripts\check-runner.ps1
与仓库文档的关系
以下历史说法在 runner 正式落地前,不能再当作既成事实:
docs/CI-CD.md中“act_runner 已注册并持续运行”docs/PHASE7-PROGRESS.md中“Gitea Runner 已运行”
以后必须改成:
- 已验证 runner 基础设施状态
- 已验证 runner 当前在线
- 已验证 runner 可消费指定 run
也就是: 状态必须来自检查,不来自假设。
验收标准
runner 基础设施完成的标准:
act_runner.exe有固定安装目录config.yaml有固定路径- 有固定启动脚本
- 有固定停止脚本
- 有固定健康检查脚本
- 开机自动启动机制已配置
- 日志目录固定
- 新 run 可以被稳定消费
- 文档中的 runner 状态表述与现实一致
当前结论
本专项当前真正缺的不是另一条 workflow patch, 而是 runner 作为基础设施的正式纳管。
并且根据现有仓库中的路径约定(如 xiaoxia-server:/var/lib/xiaoxia-ci/xiaoxia-saas.git),
runner / Gitea 的真实宿主很可能在服务器侧而非当前本机。
因此正式治理必须先回答一个基础问题: runner 到底运行在哪台机器上,并把这个事实写进文档和检查脚本。