build/deploy workflow 加 concurrency cancel-in-progress

并发组 = workflow name + ref。同分支连续 push 时:
- 新 run 入组发现已有 in-progress run → 立即取消旧的,新的开跑
- 最终只构建 + 部署最新代码,省 CI 时间
- 不同分支的 build/deploy 互不干扰(虽然当前只 custom 用)
- build 与 deploy 是两个独立 workflow name,互不影响(build 跑时
  deploy 不会被取消,反之亦然)

CLAUDE.md 同步加"并发取消策略"段说明该行为。
This commit is contained in:
2026-05-02 21:18:39 +08:00
parent 4bdd2c7195
commit 65d52571de
3 changed files with 19 additions and 2 deletions
+4 -2
View File
@@ -74,10 +74,12 @@ git.zhengchentao.win/dev/ezbookkeeping origin,本地唯一 remote
日常 feature commit 流程(全自动 CD):
1. 在 custom 上改代码 → commit → push
2. **自动触发 build**(除非只改了 `**.md` / `.gitengine` / `LICENSE` / `screenshot/**`
3. build 成功 → **自动触发 deploy**跑 repo Variables 里的 `CUSTOM_DEPLOY_SCRIPTS`
2. **自动触发 build**(除非只改了 `**.md` / `.gitignore` / `LICENSE` / `screenshot/**`
3. build 成功 → **自动触发 deploy**内联在 deploy.yml 里:clone nas-infra → docker compose pull → up -d
4. 整条 push → build → deploy 链路无人工介入
**并发取消策略**build-image.yml 与 deploy.yml 都设了 `concurrency.cancel-in-progress: true`,连续多次 push 时**只构建+部署最新那一次**,中间的 in-progress run 自动取消。例:连续 3 次 push 间隔 30 秒,第 1 次 build 跑到 30%、第 2 次到来取消它、第 3 次又取消第 2,最终只 build + deploy 第 3 次的代码。省 CI 时间又保证最终一致性。
如果想跳过 build/deploy(例如手动多次 push 调试),commit 时只改文档相关文件即可(落在 paths-ignore 范围内)。如果想强制重打某个旧 commit,去 Actions UI 手动触发 `Build Docker Image`,填要打包的 branch / tag。如果想只重新部署当前镜像(不重新 build),手动触发 `Deploy Docker Image` workflow。
**为什么 rebase 不 merge**:个人项目,无团队协作语义要保留,线性历史更清爽。