Xcode Server创建Bot报错:配置的Scheme无法找到,求排查方案
排查与解决Xcode Server Bot找不到Scheme的问题
我之前在配置Xcode Server Bot时也踩过几乎一样的坑,结合你提到的几个疑点,给你整理了一套针对性的排查和解决步骤,应该能帮你搞定:
1. 先把Scheme的共享配置坐实
你说已经把Scheme配置在项目文件内,但Xcode Server对Scheme的共享有严格要求,别只看本地设置:
- 打开Xcode,进入
Product > Scheme > Manage Schemes,确保你的"App Name"Scheme的Shared选项是勾选状态; - 关键!Xcode勾选Shared后会生成
xcshareddata/xcschemes/目录下的Scheme文件,一定要把这个目录和文件提交并push到develop分支上——Server拉取代码时如果没有这个文件,根本识别不到你的Scheme; - 另外检查Bot配置里的Scheme选择,名称要和本地完全一致,包括大小写(Xcode Server对大小写敏感,别大意)。
2. 排查CocoaPods预集成脚本的坑
预集成脚本(比如pod install)确实很容易导致Scheme识别问题,你可以这么排查:
- 首先确保脚本里的路径是对的,尤其是项目名带空格的情况,路径必须用双引号包裹,比如:
cd "/Users/your-server-user/Projects/Your App Name" pod install --repo-update - 其次,pod install后Xcode Server可能不会自动刷新项目配置,你可以在脚本末尾加一行命令强制刷新Scheme列表:
xcodebuild -list -project "Your App Name.xcodeproj" - 还有,确认Bot配置里选的是CocoaPods生成的
xcworkspace文件,而不是原来的xcodeproj——用CocoaPods的项目必须基于workspace构建。
3. 搞定项目名称带空格的问题
项目名有空格确实容易在路径解析上出问题,除了脚本里加引号,还要检查这几个地方:
- Bot的
Source标签里,仓库克隆的路径是否完整,有没有因为空格被截断; - 在
Build标签选Scheme时,确保下拉框里的Scheme名称空格显示正常,没有被转义成奇怪的字符; - 可以临时把项目名改成无空格的版本,测试Bot能不能正常识别Scheme,快速确认是不是空格的锅。
4. 几个容易忽略的补充排查点
- 检查Xcode Server的权限:确保运行Xcode Server的用户(一般是
_xcsbuildd)有访问项目目录、仓库以及CocoaPods缓存目录(~/.cocoapods)的权限; - 清理Bot缓存:在Xcode Server的Bot页面,点击
Actions > Clean,然后重新触发构建,旧缓存有时候会搞事情; - 本地模拟Server构建:在终端用
xcodebuild命令模拟Bot的构建流程,比如:
如果本地执行这个命令也报错,那问题肯定在本地项目配置,不用在Server上瞎折腾了。xcodebuild -scheme "App Name" -workspace "Your App Name.xcworkspace" build
内容的提问来源于stack exchange,提问作者user7684436
相关产品推荐
相关产品推荐

