Skip to content

ci: create ~/.cargo before writing config on macOS runners - #217

Merged
vnt-dev merged 1 commit into
vnt-dev:mainfrom
btsd321:ci/create-cargo-config-dir
Oct 30, 2026
Merged

vnt-dev merged 1 commit into
vnt-dev:mainfrom
btsd321:ci/create-cargo-config-dir

Conversation

@btsd321

@btsd321 btsd321 commented Oct 29, 2026

Copy link
Copy Markdown
Contributor

问题

Release 工作流里「Build x86_64-apple-darwin」和「Build aarch64-apple-darwin」两个 job 在 Install and configure dependencies 步骤必然失败:

/Users/runner/.cargo/config.toml: No such file or directory
##[error]Process completed with exit code 1

失败的 job 会让 deploy 及其后的 desktop-windows、release-notes 全部被跳过,因此 整个 Release 不会生成任何安装包,即使其余 16 个平台都编译成功。

根因

.github/workflows/rust.yml 第 203 行直接向 ~/.cargo/config.toml 追加交叉编译配置:

cat >>~/.cargo/config.toml <<EOF

macOS runner 上的 rustup 不会创建 ~/.cargo 目录(运行日志显示 rustup 1.29.2、rustc 1.99.1 都正常,只是该目录不存在),重定向目标目录缺失时 bash 直接报 No such file or directory 并因 -e 退出。Linux 和 Windows runner 的 ~/.cargo 是存在的,所以只有这两个 macOS job 受影响。

修复

在写入前创建目录:

mkdir -p ~/.cargo
cat >>~/.cargo/config.toml <<EOF

mkdir -p 对已存在的目录是幂等的,Linux/Windows 上行为不变。

验证

在 fork 的 btsd321/vnt 上以同样配置打 tag 触发完整的 Release 工作流(run 40937166994):

  • 18 个 job 中 17 个成功,包括全部 Windows(x86_64 / i686 / aarch64)、全部 Linux musl(x86_64 / aarch64 / armv7 leabi / armv7 leabihf / arm leabi / arm leabihf / mips / mipsel)、FreeBSD、Android JNI 三套 ABI
  • 唯一失败的就是本 PR 修复的 x86_64-apple-darwin,失败点与上面的日志一致
  • deploy 因该失败被 skipped,Release 未生成——这正是本 PR 要解决的问题

修复后重跑预计 18 个 job 全绿,deploy 正常执行并产出全部平台的 zip。

@vnt-dev
vnt-dev merged commit 1210990 into vnt-dev:main Oct 30, 2026
2 of 4 checks passed
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