如何在CI中跑hk检查:从hk check --all到分支增量检查的完整教程
【免费下载链接】hkgit hooks and project lints项目地址https://gitcode.com/gh_mirrors/hk2/hk点击查看免费下载hk 是一个 Git hooks 和项目 lints 并行检查工具git hooks and project lints能让 linter 和 fixer 并发运行且互不冲突。本文面向新手手把手教你在 CI 中跑 hk 检查先用hk check --all做全仓库基线检查再进阶到基于分支增量的快速检查并顺带讲清环境准备、profile 和诊断输出。一、在 CI 中跑 hk 前的准备工作在 CI 里使用 hk核心原则是CI 必须像开发机一样安装 hk 以及所有配置中用到的 linter 工具。hk 只负责编排怎么跑这些命令不负责安装工具本身。1. 安装 hk 与工具链如果你用 mise 就是例子提交好mise.toml后CI 里只需要两条命令mise install mise exec -- hk check --all如果 linter 是项目依赖如 Prettier、Ruff还需执行包管理器安装命令并把可执行目录暴露给 hk。 建议在项目中固定 hk 和 linter 的版本保证本地与 CI 使用同一套规则。2. 本地与 CI 共享同一套检查在hk.pkl中定义一个checkhook复用你的 linter 映射即可hooks { [check] { steps linters } }然后 CI 里运行hk validate hk check --all两个注意点直接在 CI 中调用 hk不需要执行hk install那只在装 Git hooks 时需要保持 check 命令只读让失败结果清晰告诉你该改什么修复请用hk fix在本地完成人工确认后再提交。官方 CI 指南见 docs/ci.md入门流程见 docs/getting_started.md。二、全仓库检查hk check --allhk check --all会选中所有被跟踪的文件加上符合条件的 untracked 文件然后应用每个 step 的文件过滤器是全量基线检查最简单可靠的方式hk check --allhk 会把各 step 并行执行通过文件读写锁避免多个 step 修改同一文件时互相踩踏。下图就是 hk 并行跑完项目检查后的实际效果三、分支增量检查只查本次 PR 改动的文件大仓库跑全量检查太慢hk 支持按两个引用之间的差异选择文件即分支增量检查hk check --from-ref origin/main --to-ref HEAD把origin/main换成你的目标分支即可。三个关键点引用必须在checkout 里要同时包含这两个引用且历史足够做比较shallow clone 可能要多 fetch 一次文件只是过滤器引用选择决定查哪些文件路径命令仍作用于当前 checkout不会检出历史版本显式引用更适合 CI本地可以用hk check --pr自动对比默认分支CI 中用显式的--from-ref/--to-ref更方便排查。完整参数说明可查阅 docs/cli/check.md。四、用 profile 管理重检查有些检查如全量 typecheck太贵不适合每次提交都跑。hk 提供 profile 机制把这类 step 打标[typecheck] (Builtins.tsc) { profiles List(slow) }在 CI 中按需显式开启hk check --all --slow hk check --all --profile ci --profile slow注意多个正向 profile 的 step 需要全部满足才会运行ci只是一个标签不会因名字自动激活。下图是 hk 检查完成后的结果面板可以一眼看到每个 step 的执行状态与耗时五、收集有用的诊断信息CI 挂了却不知道为什么hk 内置了几组对 CI 特别友好的诊断手段hk check --all --no-fail-fast # 不提前中止收集所有 step 的失败 hk check --all --plan --json # 不执行先输出选中的 step 与文件JSON HK_TIMING_JSONhk-timing.json hk check --all # 输出总耗时与各 step 耗时还有面向 CI 平台的结构化输出参数用途--format jsonl输出结构化执行事件--sarif hk.sarif归一化诊断接入 SARIF 查看器--junit-xml hk.junit.xml每个 step 作为一条 JUnit 用例喂给 CI 测试结果面板一个小提醒timing 文件里并行 step 的耗时不能直接相加当作总耗时。六、小结CI 中跑 hk装好 hk 与全部 linter 工具然后hk validatehk check --all无需hk install大仓库提速用hk check --from-ref origin/main --to-ref HEAD做分支增量检查慢检查放 profile按需--slow/--profile开启用--no-fail-fast、--plan --json、--junit-xml等参数让 CI 日志更有用。按这套流程走下来你的 CI 就能和开发机跑完全相同的一套检查又快又稳 赞分享【免费下载链接】hkgit hooks and project lints项目地址https://gitcode.com/gh_mirrors/hk2/hk点击查看免费下载相关推荐如何用 rustlings check-all 批量检查所有练习的完成状态如何用 rustlings check all 批量检查所有练习的完成状态 在 Rustlings 中正常流程是在 watch 模式里一道一道地过练习。当你教程CLI示例工程终极npm-check API指南如何在CI/CD中集成依赖检查自动化终极npm check API指南如何在CI/CD中集成依赖检查自动化 npm check是一个强大的Node.js依赖管理工具能够自动检查项目中的过期、错开发工具CLIPyre-check与CI/CD集成自动化代码质量检查的完整方案Pyre check与CI/CD集成自动化代码质量检查的完整方案 Pyre check作为一款高性能的Python类型检查工具能够帮助开发团队在持续集成/持静态分析开发工具代码质量创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考