Skip to content

bug(cli): release publish 偶发不触发远端 tag-push CI(provider/v0.1.1-alpha.3 实测) #23

Description

@Guo-Zhang

现象

使用 qtcloud-devops v0.11.0 对 quanttide/qtcloud-course 执行:

```bash
qtcloud-devops release publish -v provider/v0.1.1-alpha.3 -y
```

  • 本地 tag 已创建并推送成功、GitHub Release 创建成功
  • 但监听 `push: tags: provider/` 的 Deploy Provider 工作流从未被创建 run**
  • 查询 `actions/runs?branch=provider/v0.1.1-alpha.3` 在发布后约 7 分钟内持续返回 0 条

时间线(2026-08-26 UTC)

时间 事件
16:36 changelog 提交推送 main,PushEvent 正常出现在 events 流
~16:43 publish:tag 推送 + Release 创建(published 16:43:34)
16:43–16:50 无任何新 Actions run;events 流中无 refs/tags PushEvent(仅 main 的 PushEvent 与 ReleaseEvent)
16:50:37 手动删除远端 tag(DeleteEvent 出现)
16:50:40 `git push origin provider/v0.1.1-alpha.3` 重推
16:52 Deploy Provider run 立即出现并执行(全绿)

同样的重推补救之前 alpha.2 的部署缺失也成功了(该版本有 Release 但从未有部署记录)。

分析

  • 对照 crates.io 0.11.0 源码与本地 HEAD,`execute_release` 顺序均为 create_tag → push_tag → create_release,顺序正确;push_tag 失败会回滚且不会走到 create_release。
  • 因此怀疑是 GitHub 侧 tag ref 更新的 push 事件偶发丢失(可能与「Release 自动建 tag」机制竞态有关),或事件接收延迟超过观测窗口。

建议

  1. publish 收尾校验:push_tag 成功后用 `git ls-remote origin refs/tags/` 验证远端存在;并可选轮询 GitHub API `actions/runs?branch=` 数秒确认目标工作流已被调度,超时则提示用户删 tag 重推。
  2. 建议 release 输出增加明确提示:若下游 CI 监听 tag 而发布后未见 run,可执行
    ```
    git push origin :refs/tags/ && git push origin
    ```
    补发 push 事件。

环境

  • cli 版本:qtcloud-devops-cli 0.11.0(crates.io 二进制,crates 源码核对一致)
  • 仓库:quanttide/qtcloud-course,Deploy Provider 触发器为 `push.tags: provider/**`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions