wandering1
|
49f3e2dac5
|
CI runner 修"双看门狗抢 .runner.lock":-StartNow 先清残留进程再启动
实测发现(比文档问题更要紧):runner 网页 online、-Status 说 daemon 在跑,
但 runner-watchdog.log 每 10 秒刷 "starting daemon → daemon exited, exit code 1",
daemon 日志写 "another gitea-runner process is already using .runner" /
"runner file is already locked by another process"。
根因:Unregister-ScheduledTask 不会带走旧实例启动的进程。13:22 重跑 bootstrap 时,
12:53 起的旧看门狗成为孤儿并继续养着旧 daemon,旧 daemon 占住 .runner.lock,
新注册任务启动的看门狗永远抢不到锁。online 是旧 daemon 在硬撑——任务实际谁也没管,
日志还在以约 20 MB/天 增长。
- ci_runner_bootstrap.ps1:-StartNow 新增 Stop-StaleRunnerInstances,先停孤儿看门狗
再停残留 daemon(顺序不能反:只杀 daemon 会被活着的看门狗 10 秒内重拉),启动后
等 12 秒回显单实例确认;-Status 新增重复实例计数 + daemon 日志锁冲突检测
- 指南 §3.4 补注销不停进程的说明与"纯注释改动不需重启任务";§7 排障表加
"online 却每 10 秒重启"一行(含手工应急命令)
- §3.2 / README:deploy_runner_task.ps1 与 run_runner.cmd 状态由"仍在磁盘、建议删除"
改为"已删除";README 补重跑部署前的锁冲突警示
机器侧同步(不在版本库):config.yaml 头部"常驻改用 sc.exe / New-Service"是 §3.0
已证伪的错误指引,改为看门狗口径并指向本文——改后 YAML 可解析且所有配置值逐项与
改前一致(只动注释);删除两个废弃脚本前核实计划任务动作目标是
run_runner_watchdog.ps1,删除不影响在跑 runner;check_env.ps1 指向废弃脚本的提示
改指 bootstrap(带 BOM 文件,改后 BOM 完好、语法 0 错)。
验证:pre-commit run --all-files 17 项全 Passed;bootstrap parse 0 错、纯 ASCII、
-DryRun 正常。当前 runner 仍 online(旧 daemon 硬撑),彻底归一需管理员跑一次
-StartNow 清残留。
|
2026-10-12 17:37:19 +08:00 |
|
wandering1
|
8b35769a5c
|
CI 文档单一口径清理:以本机实测现状为准,旧方案降级为"勿照抄"警示
合并稿初版对 4 处分歧采取"两说并存 + 衔接注",长期看是隐患(读者可能照抄失效方案)。
本次先实测取现状,再统一口径:gitea-runner v4.0.1 / D:\Docker\act_runner /
--instance http://127.0.0.1:3001 / labels windows:host / config.yaml 实际值。
- 注册口径:删掉 act_runner v0.2.11 + C:\act_runner + 公网域名的可复制命令块,只留
"勿照抄"警示——核实 C:\act_runner 至今不存在,且 v0.2.x 与 v4 命令集不兼容,
照抄会装出连不上 Gitea 的 runner
- config.yaml:示例 fetch_timeout 由 5m0s 改为磁盘实际值 1m0s(超 RPC timeout 1m 会被
截断并刷告警)、timeout 统一 30m0s,两处示例块对齐真实文件
- 常驻口径:§3.2 deploy_runner_task.ps1 标为已废弃并写清失效机理(单次 daemon 是
"正常退出",计划任务失败重启永不触发);§3.3 手动等价命令重写为看门狗版任务对象
(旧版会教人手搓出坏配置);§10 TL;DR 第 4 步改指 ci_runner_bootstrap.ps1
- 数字口径:L0.5 期望值更新为 288/288(2026-10-12 实测),run#8 的 39/39 与 278/278
标注为历史快照——判定只看 fail=0 与 A==B,不拿历史数字当基准
顺带同步到现状:健康三查与排障表改用现行日志名(runner-daemon.log /
runner-watchdog.log;runner-stdout.log 标为遗留并说明其 ASCII+UTF-16LE 混编码);
BOM 示例对象换成 check_env.ps1 并注明看门狗是纯 ASCII 无需 BOM;配套脚本表补
run_runner_watchdog.ps1,并警示磁盘上仍存的 deploy_runner_task.ps1 / run_runner.cmd
误执行会把看门狗任务覆盖回单次任务;补"Next Run Time 为空属开机触发器正常表现"。
保留不动:机器级 DTU_* 为正式通道、全局 site-packages 为兜底——这是设计的降级链,
不是文档分歧。
验证:check_doc_links.py --all 125 篇 0 问题;pre-commit run --all-files 17 项全 Passed。
|
2026-10-12 17:06:29 +08:00 |
|
wandering1
|
ba40cc0d20
|
远程 CI 文档独立成 docs/CI/:两篇重叠指南合并为一篇,AGENTS.md 压成一行指针
动因:远程 CI 只跑在本机一台 runner(win-stm32-ci)上,其他机器与项目都不涉及,
但内容散在 4 处约 2000 行——两篇高度重叠的指南躺在「环境与部署」里与换机核对清单
并列,AGENTS.md 提交门禁节还塞了 4 条 runner 运维经验,导致每次会话都被这些机器
专属细节干扰。
结构:新建 docs/CI/,README.md 作唯一入口(适用范围 + 章节速查 + 常用命令),
远程CI完整指南.md 为合并稿。
- 合并:CI配置指南 477 行 + Gitea_Runner部署指南 917 行 → 一篇 1300 行;骨架内容
逐行比对核实无丢失(仅章节重编号与相对链接按新位置改写),重复段按"留新版"去重,
独有内容全部搬入(下载/config.yaml 字段语义/不能用 Windows 服务的根因/内网 action
三种处置/check_env 自检/TL;DR/排障表 13 条独有行/MySQL 直查核验)
- 再分配:测试流程 §9.2 两个 job 的步骤细节并入指南 §5.5、§9.4 部署前置表并入 §0.2;
测试流程 §9 只留测试分层视角(覆盖哪些层、触发与 paths-ignore、本地等价、
"CI 不替代本地门禁")
- AGENTS.md:4 条 CI 经验(看门狗 / gitlint stage / UTF-16LE / CI 概览)压成 1 行指针
- 引用同步 6 个文件:docs/README 目录树与索引、项目部署环境要求 3 处、本地工具路径
环境变量方案、待处理内容、scripts/README(补登 3 个 CI 脚本并标注为本机专属)
验证:check_doc_links.py --all 125 篇 0 问题;pre-commit run --all-files 17 项全 Passed。
两篇旧文档以 git rm 删除(历史仍在 git 中);各文档变更记录的历史行按仓库惯例不改写,
只新增 2026-10-12 行。
|
2026-10-12 14:03:44 +08:00 |
|