Skip to content

fix: install.sh 回退到 v1.16.0 的 bee- 遗留资产 - #93

Open
zh30 wants to merge 1 commit into
mainfrom
cursor/fix-install-bee-fallback-72b2
Open

zh30 wants to merge 1 commit into
mainfrom
cursor/fix-install-bee-fallback-72b2

Conversation

@zh30

@zh30 zh30 commented Sep 18, 2026

Copy link
Copy Markdown
Owner

根因

curl -fsSL https://get.amberjs.com/install.sh | sh 在 Apple Silicon 上 404,已当场核对:

  1. 线上 / 仓库 install.sh 只下载 amber-${tag}-${target}.tar.gz
  2. GitHub Release v1.16.0 原先只有 bee- 前缀资产(例如 bee-v1.16.0-aarch64-apple-darwin.tar.gz
  3. 压缩包内二进制文件名是 bee,不是 amber
  4. amber-v1.16.0-aarch64-apple-darwin.tar.gz 当时返回 HTTP 404

这是品牌从 Bee → Amber 后,安装脚本已改名前缀,但 v1.16.0 发版工作流仍按旧名上传。当前 main 上的 .github/workflows/release-assets.yml 已经产出 amber- 前缀和包内 amber 二进制,后续 tag 不需要再改工作流逻辑。

变更范围

  • install.sh + apps/website/public/install.sh(保持一致)
    • 先试 amber-${tag}-${target}.tar.gz,404 再试 bee-…
    • 解压后接受 amberbee,安装为 $AMBER_INSTALL_DIR/amber
    • 失败时列出试过的 URL
    • 保留 set -e、POSIX shshellcheck -s sh 通过
    • 新增 --print-asset-urls / AMBER_RELEASE_BASE 便于测试
  • install.ps1 + website 副本:同样先 amber-*.zipbee-*.zip,接受 amber.exe / bee.exe,安装为 amber.exe
  • release-assets.yml:仅加注释,明确后续发版必须继续用 amber-(已是现状,没有改回 bee-
  • apps/website/README.md:写清 get.amberjs.com 如何更新
  • tests/install_script_fallback_tests.rs:本地 HTTP fixture 覆盖 v1.16.0 + aarch64-apple-darwin 回退到 bee- 并安装出名为 amber 的二进制

影响模块

安装脚本、官网 public 副本、Release 资产命名约定(文档/测试锁定)。运行时 / CLI / Dependabot / #92 CI 测试不在范围。

已做的线上补救(v1.16.0 资产)

已用 GitHub token 给 v1.16.0 补传 5 个 amber-v1.16.0-… 资产。不是原 bee- 文件的字节级拷贝:从对应 bee- 包取出二进制,改名为 amber / amber.exe 后重打包,这样:

  • install.sh(只认 amber- URL + 包内 amber)现在就能过,不必等 get.amberjs.com 更新
  • 原有 bee- 资产仍保留,新脚本的回退路径也继续有效

已核对:

  • amber-v1.16.0-aarch64-apple-darwin.tar.gz → HTTP 200,包内文件名 amber
  • 同 tag 的 linux x64 / linux arm64 / macOS x64 / Windows zip 均为 200,包内为 amberamber.exe
  • 本机用新脚本对真实 GitHub 安装 v1.16.0 linux x64:先试 amber-(现已 200),装到名为 amber 的二进制,--version 输出 bee 1.16.0(旧二进制自身的产品名,未改内容)

get.amberjs.com 如何更新

get.amberjs.com 是官网 Worker 的自定义域(apps/website/wrangler.toml),没有 GitHub Actions 自动部署。本环境没有 CLOUDFLARE_API_TOKEN,无法代为发布。

src/worker.ts/install.sh/install.ps1 的顺序是:R2 桶 amber-dist 里有对象就用 R2,否则回退到 Worker 静态资源。当前线上响应头是 content-type: application/x-sh + max-age=0(与 amberjs.com/install.sh 同一 etag),说明 现在走的是静态资源,不是 R2

合并后 Henry 在能访问该 Worker 的机器上跑(让线上脚本带上 bee- 回退,兼容其它旧 tag):

cd apps/website
pnpm install --frozen-lockfile
pnpm run deploy

prebuild 会把仓库根目录的 install.sh / install.ps1 拷进 public/

若以后 R2 里放了 install.sh,它会盖住这次 deploy。那时还要:

npx wrangler r2 object put install.sh --file=../../install.sh --bucket=amber-dist --remote --content-type text/plain
npx wrangler r2 object put install.ps1 --file=../../install.ps1 --bucket=amber-dist --remote --content-type text/plain

现在不必等这次 deploy,Apple Silicon 上的旧 curl | sh 也应已能装 v1.16.0(因为 amber- 资产和包内 amber 二进制都在了)。

验证步骤

# 逻辑:v1.16.0 + Apple Silicon 会打印 amber- 然后 bee-
AMBER_VERSION=v1.16.0 AMBER_UNAME_S=Darwin AMBER_UNAME_M=arm64 sh install.sh --print-asset-urls

# 本地 fixture:amber- 404 → bee- 200,安装出名为 amber 的二进制
cargo test --test install_script_fallback_tests

# 真实 GitHub(本机已跑过 linux x64)
AMBER_VERSION=v1.16.0 AMBER_INSTALL_DIR=/tmp/amber-bin sh install.sh

本机结果:

  • shellcheck -s sh install.sh 通过
  • cargo test --test install_script_fallback_tests7/7 通过
  • cargo test --test release_workflow_tests:安装脚本相关用例通过;macos_x86_64_asset_job_uses_live_intel_runnerwindows_sys_imports_match_v0_52_modules 失败,属于仓库既有问题,与本次改动无关(fix: 修复 CI 高失败率:fmt/audit/tests/docker #92 / Dependabot 不在范围)
  • 真实 v1.16.0 安装成功

未验证项

  • 真实 Apple Silicon 机器上的 curl | sh(darwin arm64 资产已存在且包内为 amber,但未在 M 系列机器上执行)
  • install.ps1 在 Windows 上的端到端
  • 官网 wrangler deploy(缺 Cloudflare secret)

相关:官网安装文档 / README 仍指向 get.amberjs.com;后续 tag 由现有 release-assets.yml 产出 amber- 资产。

Open in Web Open in Cursor 

v1.16.0 GitHub Release 资产仍是 bee- 前缀,包内二进制名为 bee。
install.sh / install.ps1 先试 amber-,404 再回退 bee-,并统一安装为 amber。

Co-authored-by: Henry Zhang <hello@zhanghe.dev>
@changeset-bot

changeset-bot Bot commented Sep 18, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 8d6a6eb

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@zh30
zh30 marked this pull request as ready for review September 18, 2026 10:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants