SuperAPI AI 工具集

shipping-build-artifacts

部署与运维

查看项目

更新于 10-16 06:21

技能介绍

用途:让构建步骤真正约束最终分发的产物。源码树的 lint、类型检查与测试通过,并不代表用户安装的字节流可用。资料指出多种“全绿 CI 却发布损坏或过期产物”的失败模式。

主要能力与规则:构建脚本中,缺少声明输入只警告并 exit 0 不构成门槛,应改为非零退出;脚本里的 warn 只能用于产物缺少它仍可工作的文件。产物大小检查需同时有上限与下限,避免“缺文件反而更小”蒙混过关;更好的是直接断言归档条目集合与入口所需集合一致。

文件清单(如 DIST_FILES、only-include、package_data)是“应用由什么构成”的第二份副本,易漂移。应改为从真实入口派生,或校验 manifest 与 script src/importScripts 引用的每个路径在 dist/ 中存在。重复的依赖元数据需加归一化对比测试。

已提交的构建产物会静默过期:应让 CI 重新构建并与已提交产物 diff,漂移即失败;构建器需固定精确版本,确认输出字节确定性,并在本地可运行,例如:npx -y esbuild@0.24.2 src/app.jsx --jsx=transform --minify --outfile=/tmp/app.js,再 diff /tmp/app.js web/app.js。重新构建产物应与源码改动同一提交,而非后续补提交。

发布脚本常在非编写环境的操作系统上运行,应避免 GNU 专有选项(如 grep -P),改用解析器读取结构化元数据,例如:VERSION=$(python -c 'import tomllib;print(tomllib.load(open("pyproject.toml","rb"))["project"]["version"])'),并加测试断言构建脚本提取的版本与项目清单声明一致。

顺序要求:先构建,再列出并断言入口存在,然后从源码树不在加载路径上的目录安装或加载并实际执行一个真实符号或命令,最后才上传;校验须与上传在同一 job 内、上传之前。

本仓库特定说明:package.json 的 files 列表等价于 DIST_FILES,需精确列出发布内容(bin/、scripts/、mcp/、references/、SKILL.md、README.md、LICENSE),且 .claude/ 绝不可出现在其中;每次发布前运行 npm publish --dry-run,留意 pycache/.pyc 混入 tarball。该仓库目前没有“从仓库外安装并执行符号”的独立步骤,README 开发部分的 node bin/install.js --dir /tmp/skills 最接近,值得在正式发布前执行。来源标注为 wdm0006/python-skills(MIT)。