You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode Cloud中CI_WORKSPACE变量为空致Flutter构建失败求助

Xcode Cloud构建失败:CI_WORKSPACE变量为空的解决办法

为什么CI_WORKSPACE会为空?

  • Xcode Cloud的环境变量(包括CI_WORKSPACE)是仅在官方默认执行环境中自动注入的。如果苹果侧Xcode Cloud环境有更新,或者你修改了项目的构建方案配置(比如自定义脚本执行路径、环境),都可能导致该变量未被正确设置。
  • 另外,若脚本的执行上下文被意外修改,也会出现变量丢失的情况。

CI_WORKSPACE是如何被设置的?

这个变量是Xcode Cloud在构建启动时自动赋值的,指向克隆后代码仓库根目录的绝对路径,目的是让脚本快速定位项目根目录,无需手动计算路径。

修复方案

方案1:手动推导仓库根目录(替代CI_WORKSPACE)

直接替换脚本中cd $CI_WORKSPACE这一行,用脚本自动定位根目录:

# 从ci_scripts目录向上跳转至仓库根目录
cd "$(dirname "$0")/.."
# 或者用git命令直接获取根目录
cd "$(git rev-parse --show-toplevel)"

方案2:检查Xcode Cloud构建配置

  • 确认ci_post_clone.sh放在项目根目录的ci_scripts文件夹下,Xcode Cloud默认会在此路径执行脚本,此时环境变量应正常注入。
  • 检查构建配置中是否添加了自定义环境变量覆盖,或是禁用了默认环境变量注入。

方案3:兼容两种情况的写法

为避免后续再出现变量为空的问题,写兼容代码优先用CI_WORKSPACE,失败则自动推导:

if [ -z "$CI_WORKSPACE" ]; then
  CI_WORKSPACE="$(git rev-parse --show-toplevel)"
fi
cd "$CI_WORKSPACE"

优化后的完整ci_post_clone.sh脚本

echo "Starting CI script..."

# 兼容CI_WORKSPACE为空的情况
if [ -z "$CI_WORKSPACE" ]; then
  CI_WORKSPACE="$(git rev-parse --show-toplevel)"
fi
echo "Workspace path: $CI_WORKSPACE"

cd "$CI_WORKSPACE"

ls

# Install Flutter using git.
git clone https://github.com/flutter/flutter.git --depth 1 -b stable $HOME/flutter
export PATH="$PATH:$HOME/flutter/bin"

# Install Flutter artifacts for iOS (--ios), or macOS (--macos) platforms.
flutter precache --ios

# Install Flutter dependencies.
flutter pub get

# Install CocoaPods using Homebrew.
HOMEBREW_NO_AUTO_UPDATE=1 # disable homebrew's automatic updates.
brew install cocoapods

cd ios && pod install # run `pod install` in the `ios` directory.

flutter build ios

内容的提问来源于stack exchange,提问作者Jonas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 13:42:53