Xcode Server bot 无法使用默认命令读取属性列表

Posted

技术标签:

【中文标题】Xcode Server bot 无法使用默认命令读取属性列表【英文标题】:Xcode Server bot unable to read property lists using defaults command 【发布时间】:2014-04-09 18:31:46 【问题描述】:

我的目标之一是使用默认命令读取属性列表的外部构建工具。

当机器人运行该工具时,defaults 命令无法找到指定的默认值:

defaults read /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version CFBundleShortVersionString

> The domain/default pair of (/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version, CFBundleShortVersionString) does not exist

从普通用户的帐户运行相同的命令可以正常工作:

defaults read /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version CFBundleShortVersionString

> 7.1

但由于某种原因,它不适用于 _teamsserver 用户:

sudo -u _teamsserver defaults read /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version CFBundleShortVersionString

> The domain/default pair of (/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version, CFBundleShortVersionString) does not exist

...这就是机器人无法构建的原因。

知道为什么这不起作用吗?

谢谢。

【问题讨论】:

【参考方案1】:

尝试改用 PlistBuddy:

/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/version.plist

请注意,从 10.9 开始,您不应使用 PlistBuddy 来修改首选项文件。 Apple 添加了一个缓存系统来提高用户首选项的性能,并且它不会直接看到对首选项文件所做的更改。在这种情况下,请使用“defaults”命令,该命令使用适当的 API 来更改首选项。我的猜测是,当尝试使用带有 sudo 的“defaults”命令来访问通用 plist 时,首选项缓存系统也可能是造成问题的原因。

【讨论】:

以上是关于Xcode Server bot 无法使用默认命令读取属性列表的主要内容,如果未能解决你的问题,请参考以下文章

Xcode Server Bot 集成无法使用断言导出存档失败:exportArchive: ipatool failed with an exception

无法使用 OSX Server 3.2.1 在 XCode 6.0.1 中创建 CI Bot

Xcode Bots Server 持续集成失败

Xcode Server Bot 集成无法导出存档:错误 Domain=IDEDistributionErrorDomain Code=1“无法完成操作。”

在使用 Xcode Server bot 集成之前复制文件

更改 Xcode Server Bot 的源代码控制凭据?