# builder 按统一契约完成项目的 DEB 包与 Docker 镜像构建和发布。规范本体见 [references/contract.md](references/contract.md),`scripts/check.py` 是契约的 可执行校验器。 ## 什么时候使用 - "帮我构建这个项目的 DEB / Docker 镜像" - "把 1.2.3 发布到包仓库 / 镜像仓库" - "检查这个项目的 Makefile 是否符合 builder 契约" - "看看项目现在的发布流程" 只构建不上传时明确说明即可;上传永远需要你显式授权。 ## 项目接入契约 1. 用 create-makefile skill 生成或修正 Makefile(目标 `help/build/clean/version` + 条件 `deb/docker/push*`,变量 `ARCH/VERSION/DIST_DIR/PROJECT_NAME`)。 2. 运行 `python3 -I -S /scripts/check.py .` 直到全部 PASS。 3. 在项目根 `.env` 配置发布环境变量: ```text DEB_SERVER_URL=https://deb.example.com DEB_REPOSITORY=main DEB_TOKEN= # 只放 .env 或密钥系统,不进 git DOCKER_REGISTRY=registry.example.com ``` 4. 日常发布就是两条命令:`make deb && make push-deb`、`make push-docker`。 ## 使用示例 ```text 用 builder 检查这个项目的 Makefile 是否符合契约。 用 builder 构建当前版本的 DEB 和镜像,先不要上传。 用 builder 把 dist/example_1.2.3_amd64.deb 发布到项目已配置的测试仓库。 用 builder 发布多平台 linux/amd64,linux/arm64 镜像。 ``` ## 脚本一览 | 脚本 | 用途 | |------|------| | `scripts/check.py` | 校验项目 Makefile 是否符合契约(`--build` 实构核对产物) | | `scripts/upload_deb.sh` | 上传 `.deb` 到 HTTP 包仓库(multipart package/token/repository_name) | | `scripts/publish_docker.sh` | buildx 构建 + 推送镜像,远端 digest 验证 | | `scripts/verify_deb.sh` | 核对包元数据、内容与 SHA-256 | 环境变量契约、脚本解析顺序(`$BUILDER_SKILL_DIR` → `~/.pouch/skills/builder/scripts/`)、 脏工作树策略等完整规则见 contract.md。