wandering1
|
33a4aa4945
|
本地工具路径DTU_*环境变量改造落地:10处调用点去硬编码+变量优先解析,本机全链路验证通过,文档同步收口,requirements补pre-commit
|
2026-10-02 22:14:49 +08:00 |
|
wandering1
|
f3befaed08
|
CI:补产物存档与结果汇总,明示体积门禁盲区(S3+S14)
CI / L0 静态门禁 (pre-commit) (push) Successful in 58s
CI / L0.5 主机侧单测 (MSVC) (push) Successful in 19s
|
2026-10-02 11:55:31 +08:00 |
|
wandering1
|
df9a566982
|
CI:诊断 pre-commit 仅装于用户态导致 SYSTEM 不可见
CI / L0 静态门禁 (pre-commit) (push) Failing after 17s
CI / L0.5 主机侧单测 (MSVC) (push) Successful in 17s
第五次运行(run#5)L0 仍失败,但错误信息已指向真因:
自检步骤 3 个候选解释器(msys64 / .venv / anaconda3)全部探测失败。
根因(已实测定位):本机 pre-commit 装在
C:\Users\Administrator\AppData\Roaming\Python\Python312\site-packages
即 Administrator 的【用户态 user-site】。runner 以 SYSTEM 运行,其
%APPDATA% = C:\Windows\system32\config\systemprofile\AppData\Roaming,
根本看不到该目录 → 换任何 python.exe 路径都无效。
(已盘点本机全部 python:anaconda3 3.12.4 / workbuddy 3.13.12 /
msys64 3.14.5,以 -s 禁用 user-site 后 pre-commit 均为 rc=1。)
本次改动(workflow 侧,配合外部的全局安装):
- 探测改用 `& $py -s -m pre_commit --version`(-s 禁用 user-site),
只有 SYSTEM 真能用的解释器才被选中
- 后续 install / run 同步加 -s,保持判定一致
- 失败信息明确指向 user-site 不可见 + 给出修复脚本路径
(install_precommit_global.ps1,装到 anaconda3 全局 site-packages)
真正的修复需管理员执行该脚本(本会话无提权权限,pip --no-user
报 WinError 5 拒绝访问)。装好后 L0 即可通过。
|
2026-10-02 01:29:55 +08:00 |
|
wandering1
|
48b33921c0
|
CI:修正 python 探测被 NativeCommandError 中断
CI / L0 静态门禁 (pre-commit) (push) Failing after 17s
CI / L0.5 主机侧单测 (MSVC) (push) Successful in 16s
第四次运行(run#4)L0.5 已 PASS(status=1,MSVC 探测 + 39 单测全过),
L0 仍失败于自检步骤自身的一个 PS 5.1 行为:
& $c -m pre_commit --version *> $null
→ NativeCommandError,脚本中止
根因:$ErrorActionPreference='Stop' 下,原生命令写 stderr 会被 PS5.1
当成终止性错误(NativeCommandError),即使 *> $null 重定向也无法阻止;
于是第一个候选(msys64 python,无 pre-commit)就把整个 for 循环打断,
根本轮不到 anaconda3。
处置:探测每个候选时临时把 $ErrorActionPreference 降为 'Continue',
用 2>&1 | Out-Null 吞掉输出并取 $LASTEXITCODE,循环后恢复 'Stop'。
已在 WinPS 5.1 本地实测该探测逻辑:
msys64 rc=1 → .venv rc=1 → anaconda3 rc=0 选中,STEP OK。
|
2026-10-02 01:24:50 +08:00 |
|
wandering1
|
8e7b22184e
|
CI:按 SYSTEM 账户视角修正 Python / cppcheck 探测
CI / L0 静态门禁 (pre-commit) (push) Failing after 16s
CI / L0.5 主机侧单测 (MSVC) (push) Successful in 16s
第三次运行(run#3)已越过 PS 语法问题,环境自检真正执行,
暴露 runner 真实环境缺陷:
1. cppcheck 只在【用户级 PATH】,SYSTEM 账户看不到 →
报 runner missing cppcheck。已在自检步骤加回落到
C:\Program Files\Cppcheck 并写入 GITHUB_PATH。
2. 更隐蔽:SYSTEM 的 python 解析到 C:\msys64\ucrt64\bin\python.exe
(3.14.5),而该解释器【没有 pre-commit】(AGENTS.md 亦明令
不得用它跑依赖第三方库的脚本)。若不修,自检通过后 L0 会在
pre-commit 步骤炸。
处置:在自检步骤按 scripts/ci_local.py 同一探测序
(PATH python -> .venv -> anaconda3)挑出真正装了 pre-commit
的解释器,导出 PYTHON 环境变量供后续步骤使用。
L0.5 是独立 job(GITHUB_ENV 不跨 job),同法就地选一个可用
python(主机侧单测为纯标准库,任意 python3 均可,已用 msys64
python 实测 39/39 PASS)。
附带:run 块保持纯 ASCII(上次修正),全部 shell=powershell。
|
2026-10-02 01:21:10 +08:00 |
|
wandering1
|
e241fea801
|
CI:run 脚本改纯 ASCII(PS5.1 按 GBK 解码临时 ps1)
CI / L0 静态门禁 (pre-commit) (push) Failing after 17s
CI / L0.5 主机侧单测 (MSVC) (push) Successful in 16s
第二次 CI 运行(run#2)仍失败,但失败点前移:
pwsh 问题已修(环境自检步骤确实由 Windows PowerShell 5.1 执行)
新错误:TerminatorExpectedAtEndOfString @ 含中文那一行
根因:runner 把每个 run: 块写入临时 .ps1(无 BOM)交 PS5.1 执行,
PS5.1 按 GBK/CP936 解码 → UTF-8 中文字节与相邻引号错位 →
字符串缺少终止符(报错行号即含中文行,极易误判)。
与 AGENTS.md「字符串字面量必须纯 ASCII」同源。
处置:所有 run: 块内改为纯 ASCII(提示语改英文),中文仅保留在
YAML 的 name:/注释(Gitea 按 UTF-8 读、不喂 PowerShell,安全)。
workflow 头部补该坑说明。已用脚本核验 run: 块内零非 ASCII。
|
2026-10-02 01:17:24 +08:00 |
|
wandering1
|
09e45573c8
|
CI:修正 workflow 的 shell 为 powershell(pwsh 不存在)
CI / L0 静态门禁 (pre-commit) (push) Failing after 17s
CI / L0.5 主机侧单测 (MSVC) (push) Failing after 16s
首次 CI 运行(run#1)两个 job 均失败于同一处:
Cannot find: pwsh in PATH
根因:workflow 用 shell: pwsh(PowerShell 7,非 Windows 自带),
而 runner 所在机器只有 Windows PowerShell 5.1。
改为 shell: powershell(7 处)。已核验脚本无 PS7 独有语法
(无 ?? / ?: / && / || / -Parallel),PS 5.1 完全兼容。
workflow 头部补该坑说明,防止将来误改回 pwsh。
注:本次 CI 已验证 actions/checkout@v4 可从本实例正常拉取并
成功检出 v2-on-ui,action 拉取链路无需调整。
|
2026-10-02 01:11:45 +08:00 |
|
wandering1
|
e90486524d
|
CI:Gitea Actions 落地 L0+L0.5(补 T-6)
新增 .gitea/workflows/ci.yml:push/PR 触发两个 Windows job——
l0-gates 跑 pre-commit --all-files(无 Keil .map 时自适应跳过 mem-numbers),
l05-host-unit-tests 遍历 test/host/**/run_unit_test.py(缺 MSVC 则告警降级跳过)。
刻意不跑 @build(需 Keil 授权);L1/L2/L3 需真机+ST-LINK,不上 CI。
新增 scripts/ci_local.py:本地跑与 CI 等价的门禁(自动选用装了 pre-commit
的解释器;.map 自适应;退出码 0/1/2 与 CI 对齐),供提交前自查与 runner 就绪前过渡。
文档同步:测试开发标准流程 §9(CI 章节)/§1/§4.1、待处理内容 T-6 销项、
项目部署环境要求 §2.11(runner 前置)、pre-commit 使用说明 §1、scripts/README.md、AGENTS.md。
验证:scripts/ci_local.py rc=0(L0 14 钩子全过 + L0.5 39/39)。
|
2026-10-01 10:19:38 +08:00 |
|