如何通过命令行从Swift Package安装apollo-ios-cli(CI/CD环境适配)
更可靠的apollo-ios-cli CI安装/调用方案
你的问题核心是依赖DerivedData随机目录导致不稳定,下面是两种更简便且可靠的替代方案:
方案1:直接通过Swift Package Manager运行cli(无需提前安装)
这是最省心的方式,不需要单独安装cli,直接在项目根目录通过swift run调用apollo-ios的cli命令,SPM会自动处理依赖构建:
# 在项目根目录执行 swift run apollo-ios-cli generate --schema-path ./path/to/your/schema.graphqls --targets YourTarget
注意:首次运行会构建cli,后续CI执行会复用缓存,速度不会有明显影响
方案2:将cli安装到固定路径(避免依赖DerivedData)
如果你的CI流程需要单独的cli二进制文件,可以通过插件的--output-path参数指定固定安装目录,不用再猜DerivedData路径:
# 在项目根目录执行,将cli安装到项目根目录的bin文件夹 swift package plugin apollo-cli-install --output-path ./bin # 调用生成命令 ./bin/apollo-ios-cli generate --schema-path ./path/to/your/schema.graphqls --targets YourTarget
这种方式把cli放到你可控的目录下,完全避免了DerivedData的路径不确定性。
为什么之前的方法不稳定?
DerivedData目录的后缀是Xcode自动生成的随机字符串,通配符匹配的结果顺序不一定固定,CI环境中如果存在多个历史构建缓存,很容易取到错误的目录,导致命令失败。
内容的提问来源于stack exchange,提问作者Yamamoto
相关产品推荐
相关产品推荐

