a3a1319a11
一次性把本地与 CI 的门禁收成一条命令:make verify = python3 scripts/ci_checks.py。 两边跑的是同一份逻辑,不再各写一套步骤(两边各写一套的结局是迟早只改一边)。 14 项必需检查:identity(检出 == 事件完整 SHA,只在 CI 必需)、commits、deps-install、 format、static-go、static-web、build-go、build-web、tests-go、tests-web、contracts、 security-secrets、security-deps、manifests-locked。make list 打印清单。 三条判据写死在代码里: - 失败即停,但剩下的记 not_run 并如实写进报告;aggregate() 只认 success, 未运行/被跳过都不算通过(不适用要在清单里声明 required_in,不许运行时悄悄 skip)。 - 工具缺失、依赖没按锁装、输出解析不了 ⇒ 失败,不当成"检查通过"。 - 测试必须真跑:go test 加 -count=1 并盘点通过/跳过数;前端读 vitest 的 JSON 报告, 空套件不算通过。跳过原因会打进报告(当前 72 个集成用例因缺 TEST_DATABASE_URL 跳过)。 新增四个自带反向自检的脚本(--self-test 故意弄坏必须红): scripts/check_format.py(Go 判输出而非退出码 + 前端只能减的基线)、 scripts/check_secrets.py(只打印位置与类别,绝不打印值)、 scripts/check_deps_vuln.py(govulncheck 锁 v1.1.4 + npm audit 分级 + 到期例外)、 scripts/ci_checks.py(门禁 + 汇总)。 验证(本机实跑,全部为真实退出码): make verify → 总体 success(档案 local),identity=skipped 已在清单里声明为 CI 必需; tests-go 执行 31 个包、通过 549 / 失败 0 / 跳过 72;tests-web 106 个套件、191 个用例全过; security-deps:govulncheck v1.1.4 0 命中、npm audit 生产与全量均 0。
42 lines
666 B
Plaintext
42 lines
666 B
Plaintext
# Go
|
|
/bin/
|
|
/coverage.out
|
|
|
|
# Web
|
|
/web/node_modules/
|
|
/web/dist/
|
|
/web/tsconfig.tsbuildinfo
|
|
|
|
# Local runtime
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
/tmp/
|
|
/data/
|
|
/secrets/*
|
|
!/secrets/*.example
|
|
|
|
# Editors and OS
|
|
.idea/
|
|
.vscode/
|
|
.DS_Store
|
|
|
|
# 门禁产物(每次运行重写;不是证据,证据是运行日志与 Gitea 的 run)
|
|
/ci-report.json
|
|
/.ci-manifests.json
|
|
|
|
# Local artifacts (binaries, staging scripts, backups)
|
|
/release-diag
|
|
/worker
|
|
/apply_s5_patch.py
|
|
/tmp_*
|
|
.style-backup-*/
|
|
.hermes/
|
|
__pycache__/
|
|
/dist/
|
|
config/release.wiki-e2e.json
|
|
backups/
|
|
|
|
# 运行期灌库产物(xlsx/pdf/docx 原件,百兆级),只在本机 spool 里流转,绝不入库
|
|
/spool/ingestion/
|