Skip to content

GitHub Release 瞬时失败重试与幂等恢复 #887

Description

@sonofmagic

npm 发布与 tag 推送已成功,但 GitHub 创建 Release 返回 502,导致整个发布任务失败。实际调用实现位于 @icebreakers/monorepo@5.5.0

失败现场:https://github.com/sonofmagic/weapp-tailwindcss/actions/runs/34748944107
相关任务:https://github.com/sonofmagic/weapp-tailwindcss/actions/runs/34748944100
Related to #848;本 Issue 仅讨论 GitHub Release 请求恢复,不重复提交 provenance/OIDC 问题。

复现

  1. 对已完成 npm 发布和 tag 推送的流程,在 GitHub Release POST 请求注入 502 或网络断开。
  2. 分别模拟服务端未创建,以及已创建但响应丢失。
  3. 当前请求直接失败,重跑整个 npm 发布流程不能保证安全恢复。

建议与验收

  • Release GET/POST/PATCH 对网络错误、429、5xx 最多尝试四次,指数退避,遵守 Retry-After(秒/HTTP 日期)和限流 reset 提示;等待前不发恢复查询。
  • POST 响应不确定时,先按 tag 查询;已创建则返回已有 Release,不再次 POST。
  • 保留 422 并发重复创建后的查询恢复;普通权限或校验错误不进行创建重试。
  • 覆盖 502 后成功、响应正文中断、无效响应、限流、重试耗尽、永久错误以及已有 Release PATCH 重试。
  • 重试范围仅限 GitHub API,禁止重试整个 npm publish 流程。

消费方可复现 pnpm 补丁与回归:sonofmagic/weapp-tailwindcss#1197

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions