@@ -16,7 +16,7 @@ IMX-Forge 目前更适合采用 **维护者手动触发 release workflow** 的
1616- PR 只承担代码和文档变更,不承担版本号决策。
1717- 版本号不是单个 PR 的属性,而是维护者对一批变更形成稳定发布点后的判断。
1818- 是否发布、发布为 PATCH / MINOR / MAJOR,由维护者在触发 workflow 时决定。
19- - workflow 负责执行机械动作:计算版本号、打 tag、创建 GitHub Release、触发 Docker 发布。
19+ - workflow 负责执行机械动作:计算版本号、打 tag,并按维护者选择创建 GitHub Release、触发 Docker 发布。
2020
2121这样可以避免小修小补频繁发布 PATCH,也保留 CI 自动化带来的可重复性和低出错率。
2222
@@ -32,7 +32,7 @@ IMX-Forge 目前更适合采用 **维护者手动触发 release workflow** 的
3232| Release 文档 | ` document/release/v1.0.0.md ` | 适合继续按正式版本维护 |
3333| CHANGELOG | ` changelog/CHANGELOG.md ` | 已存在,后续沿用此路径 |
3434| GitHub Actions workflow | 5 个 | 已有 CI、Full Build、Pages、Docker 发布基础 |
35- | Docker 发布触发 | ` v*.*.* ` tag | 与手动 release workflow 天然衔接 |
35+ | Docker 发布触发 | ` v*.*.* ` tag + tag message 策略 | 与手动 release workflow 衔接,并支持按版本跳过 |
3636| ` package.json ` version | ` 0.0.1 ` 且 ` private: true ` | 不作为项目发布版本源 |
3737
3838现有 workflow:
@@ -43,7 +43,7 @@ IMX-Forge 目前更适合采用 **维护者手动触发 release workflow** 的
4343- ` .github/workflows/deploy.yml `
4444- ` .github/workflows/docker-publish.yml `
4545
46- 关键点:` .github/workflows/docker-publish.yml ` 已经在 ` v*.*.* ` tag push 时发布 Docker 镜像。因此 release workflow 只要推送正式 tag,就能自然触发 Docker 发布 。
46+ 关键点:` .github/workflows/docker-publish.yml ` 已经在 ` v*.*.* ` tag push 时响应 Docker 发布。 release workflow 会在 annotated tag message 中写入 ` Docker-Image: true/false ` ,Docker workflow 据此决定是否实际构建镜像 。
4747
4848---
4949
@@ -160,7 +160,8 @@ MAJOR 只用于不兼容变化。
160160| ---| ---| ---|
161161| ` release_type ` | ` patch ` / ` minor ` / ` major ` | 必填,决定版本号升级段 |
162162| ` version_override ` | string | 可选,手动指定版本号;为空时自动计算 |
163- | ` create_github_release ` | boolean | 默认 ` true ` ,是否创建 GitHub Release |
163+ | ` create_github_release ` | boolean | 默认 ` false ` ,是否创建 GitHub Release |
164+ | ` publish_docker_image ` | boolean | 默认 ` true ` ,是否发布 Docker 镜像 |
164165| ` dry_run ` | boolean | 默认 ` true ` ,仅计算和预览,不推送 tag |
165166
166167正式发布示例:
@@ -186,14 +187,18 @@ release workflow 应执行以下动作:
186187 |-- 运行必要发布前检查
187188 |-- 创建 annotated tag
188189 |-- push tag
189- |-- 创建 GitHub Release
190- |-- 由 docker-publish.yml 自动响应 tag 并发布 Docker 镜像
190+ |-- 按 create_github_release 决定是否创建 GitHub Release
191+ |-- 按 publish_docker_image 决定 docker-publish.yml 是否发布 Docker 镜像
191192```
192193
193- 建议 tag 使用 annotated tag:
194+ 建议 tag 使用 annotated tag,并写入发布意图 :
194195
195- ``` bash
196- git tag -a " v1.1.0" -m " IMX-Forge v1.1.0"
196+ ``` text
197+ IMX-Forge v1.1.0
198+
199+ Release-Type: minor
200+ GitHub-Release: true
201+ Docker-Image: true
197202```
198203
199204### 5.4 发布前检查
@@ -216,7 +221,7 @@ Full Build 是否放进 release workflow 可按阶段决定。当前建议:
216221
217222## 6. GitHub Release 策略
218223
219- 正式 tag 默认创建 GitHub Release。
224+ 正式 tag 默认不创建 GitHub Release。维护者只在该版本值得公告时开启 ` create_github_release ` 。
220225
221226建议:
222227
@@ -275,7 +280,7 @@ IMX-Forge vX.Y.Z
275280[ ![ License] ( https://img.shields.io/badge/License-MIT-orange?style=flat-square )] ( LICENSE )
276281```
277282
278- 由于正式 tag 默认创建 GitHub Release,README badge 与 Docker tag、GitHub Release 不会出现明显版本分裂 。
283+ 由于 GitHub Release 与 Docker 镜像发布已经解耦 ,README badge 展示的是最新 GitHub Release,不一定等于最新 git tag 或 Docker 镜像版本。这是有意设计: Release 用于公告稳定节点,Docker 镜像可按需更频繁更新 。
279284
280285---
281286
@@ -381,11 +386,11 @@ v1.1.0
381386
382387| # | 项目 | 类型 | 说明 |
383388| ---| ---| ---| ---|
384- | 1 | ` .github/workflows/release.yml ` | 新增 | 手动触发 release,计算版本号、打 tag、创建 Release |
389+ | 1 | ` .github/workflows/release.yml ` | 新增 | 手动触发 release,计算版本号、打 tag,并按选项创建 Release / 发布 Docker |
385390| 2 | ` README.md ` | 修改 | 在 badge 区域增加 Release badge |
386391| 3 | ` changelog/CHANGELOG.md ` | 修改 | 保持现有路径,后续按版本补充 |
387392| 4 | ` document/release/versioning-strategy.md ` | 修改 | 本策略文档,已接入发布文档站 |
388- | 5 | ` .github/workflows/docker-publish.yml ` | 复用 | 继续由 ` v*.*.* ` tag 自动触发 Docker 发布 |
393+ | 5 | ` .github/workflows/docker-publish.yml ` | 修改 | 继续响应 ` v*.*.* ` tag,并按 tag message 中的 ` Docker-Image ` 决定是否发布 |
389394
390395暂不实施:
391396
0 commit comments