Skip to content

[Bug] gitee 版本未更新,导致安装脚本安装失败 #593

Closed

Description

@getcode0302

Resolve the download URL of a release asset by file name.

GitHub: deterministic template /releases/download//.

Gitee : query the release API and pick the asset whose name matches

(Gitee attachment URLs carry an unstable numeric id, so we never

template them — we read browser_download_url straight from the API).

asset_url() {
_name="$1"
if [ -z "$GITEE_REPO" ]; then
printf '%s' "https://github.com/${REPO}/releases/download/${VERSION}/${_name}"
return 0
fi
gitee_api "https://gitee.com/api/v5/repos/${GITEE_REPO}/releases/tags/${VERSION}"
| tr '}' '\n'
| grep ""name":[ ]"${_name}""
| grep -o '"browser_download_url":[ ]
"[^"]"'
| head -1
| sed 's/.
"browser_download_url":[ ]*"//;s/"$//'
}
版本是拿github的

Activity

  1. PeterGuy326 commented on Jul 11, 2026

    @PeterGuy326
    Collaborator

    已在当前 origin/main(fc9acb9)和最新稳定版 v1.0.51 上完成隔离复现。

    使用 DWS_GITEE_REPO=DingTalk-Real-AI/dingtalk-workspace-cli、
    DWS_VERSION=latest 执行安装时,脚本从 Gitee tags 解析到 v1.0.51,
    但 Gitee 的 /releases/tags/v1.0.51 返回 null,最终报:

    Could not resolve download URL for dws-darwin-arm64.tar.gz (version v1.0.51)

    对照测试中,显式指定已有完整 Gitee release 的 v1.0.49,可以正常下载、
    通过 SHA256 校验、解压并运行。

    根因是 Gitee tag 镜像和 release 附件发布不同步,同时 installer 将最新 tag
    直接视为可安装 release。建议先补齐 v1.0.51 的 Gitee release 附件,再让
    installer 选择“附件完整的最新 release”,避免 tag 领先时整个国内安装链路失效。

    该问题已达到 E3 可重复复现,保持 open,待修复和回归验证。

  2. PeterGuy326 commented on Jul 13, 2026

    @PeterGuy326
    Collaborator

    修复已提交到 draft PR #603:

    • Gitee latest 改为选择包含当前安装所需附件的最新完整 release;显式版本 pin 仍保持严格,不自动换版本。
    • POSIX 主安装器、skills-only 安装器和 PowerShell 安装器保持一致。
    • 新增 Gitee release 八个标准附件的完整性校验,并接入两条发布路径。
    • 新增每日/手动巡检 workflow,及时发现 tag 与 release 附件漂移。

    验证已完成:

    • 新增定向测试通过。
    • go test ./test/scripts -skip '^TestPostGoreleaser' -count=1 通过;被排除的三个既有 TestPostGoreleaser* 在基线工作树同样失败。
    • Shell 语法、PowerShell 解析、Actionlint、diff check 均通过。
    • 使用真实 Gitee 和隔离目录完成二进制 + mono skills 安装,SHA256 校验通过。

    Gitee 运营侧目前已补齐 v1.0.51,因此最新真实回归可直接安装 v1.0.51;PR 负责防止以后再次出现“tag 已同步、release 附件未就绪”时整个安装链路失败。

    issue 继续保持 open,等待 #603 合并及发布后回归。

  3. haofeng0705 commented on Oct 20, 2026

    @haofeng0705
    Collaborator

    Hi @getcode0302 👋

    感谢反馈,也谢谢你直接贴出了相关代码,定位起来方便了很多!

    结论:这是 Gitee 镜像安装路径的一个真实问题。目前通过 Gitee 安装 latest 已可以正常完成,但防止它再次出现的安装器修复还没有合并。

    原因

    设置 DWS_GITEE_REPO 后(或 GitHub 不可达、脚本自动切换到 Gitee 时),DWS_VERSION=latest 会选择 Gitee 上版本号最高的 tag,再到这个 tag 对应的 release 里查找安装包。Gitee 上的 tag 和 release 附件不是同时就绪的:一旦 tag 先同步、附件还没上传完整,脚本就找不到下载地址,并报错:

    ❌ Could not resolve download URL for dws-<os>-<arch>.tar.gz (version vX.Y.Z).
    

    当前进展

    • 我们今天复测了一次:Gitee 模式下 latest 可以正常安装,但装到的是 v1.0.63;GitHub 最新稳定版是 v1.0.64,镜像同步存在滞后。
    • 安装器侧的修复方案在 fix: tolerate incomplete Gitee releases #603:latest 会改为选择附件完整的最新 release,显式指定版本时仍保持严格。该 PR 目前还是草稿,尚未合并。

    临时方案

    1. 需要最新版时,可以通过 npmmirror 安装(需要 Node.js):

      npm install -g dingtalk-workspace-cli --registry=https://registry.npmmirror.com
    2. 继续使用 Gitee 安装脚本时,如果 latest 报上面的错误,可以显式指定 Gitee 发行版页面上附件完整的版本,例如:

      curl -fsSL https://gitee.com/DingTalk-Real-AI/dingtalk-workspace-cli/raw/main/scripts/install.sh | DWS_GITEE_REPO=DingTalk-Real-AI/dingtalk-workspace-cli DWS_VERSION=v1.0.63 sh

    安装器修复的进展请关注 #603,这个 Issue 我们先关闭。如果按上面的方式仍然失败,欢迎直接在这里留言,并补充操作系统与架构、完整安装命令、DWS_VERSION 的取值和完整报错输出(请注意脱敏),我们会继续跟进 🙌

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions