10d8800f07
Give ack, builder, and deployer an explicit init/check mode that reports missing project config instead of failing mid-work. Point builder at makefile.builder so its contract targets do not collide with an existing Makefile.
43 lines
1.7 KiB
Markdown
43 lines
1.7 KiB
Markdown
# 镜像仓库规则
|
|
|
|
执行发布前,从用户输入和当前项目配置中确定以下信息:
|
|
|
|
| 字段 | 要求 |
|
|
| --- | --- |
|
|
| Registry | 必须显式确定,例如 `registry.example.com` |
|
|
| Repository | 必须包含项目约定的 namespace;缺省取 git 仓库名 |
|
|
| Tag | 必须显式确定;优先使用版本号或 Git SHA |
|
|
| Platform | 必须显式确定,例如 `linux/amd64` 或 `linux/amd64,linux/arm64` |
|
|
| Dockerfile | 默认 `Dockerfile`,不存在或项目另有约定时明确指定 |
|
|
| Context | 默认当前项目根目录 |
|
|
|
|
信息来源优先级:
|
|
|
|
1. 用户本次请求中明确给出的值。
|
|
2. 当前项目的 `.env` 与 `AGENTS.md`、发布文档。
|
|
3. `makefile.builder`、用户 Makefile、CI 配置或现有构建脚本中一致且无歧义的配置。
|
|
4. 询问用户。
|
|
|
|
不要从其他项目、shell history 或无关的本地配置中猜测发布目标。
|
|
|
|
## 认证
|
|
|
|
使用 Docker 当前配置的 credential helper 或已有登录状态。可用不泄露凭据的只读操作
|
|
检查目标是否可访问。认证缺失或过期时,停止并让用户自行完成登录。
|
|
|
|
不要读取、打印或复制以下内容:
|
|
|
|
- registry 密码或访问令牌
|
|
- `~/.docker/config.json` 中的认证字段
|
|
- CI secret 的值
|
|
- 包含凭据的环境变量值
|
|
|
|
## Tag 策略
|
|
|
|
- 未显式给出 `--tag` / `IMAGE_TAG` 时,使用契约「版本号」渲染出的 tag
|
|
(正式 `1.4.2`,测试 `1.4.2-feat-login.7.gabc1234`),不要退回
|
|
`git describe`,不要询问后另选一套。
|
|
- 正式产物 tag 与 Git tag `vX.Y.Z` 对应,但镜像 tag **不含** `v`;默认视为不可变。
|
|
- `latest`、`stable`、裸分支名等浮动 tag 只有在用户明确要求时才额外发布,
|
|
不能代替上面那条唯一身份。
|