突然之间,没有对Xcode构建服务器进行任何更改,我开始收到错误,即使是在不同的机器人,分支机构和应用程序中(所有这些都是Mac应用程序)。我没有更改构建服务器上的任何软件或配置(我知道),甚至没有更改。我在分析过程中得到错误一次:
检查依赖关系
代码签名错误:找到多个匹配的代码签名标识:找到了匹配“Mac Developer:OS X Server(N________L)”的多个代码签名标识(即证书和私钥对)。
在测试期间(虽然我的测试通过了 - 上面的那个是构建失败的原因):
测试失败:
找到多个匹配的代码签名标识:找到了匹配“Mac Developer:OS X Server(N________L)”的多个代码签名标识(即证书和私钥对)。
我尝试了以下操作,在每个步骤后触发构建,而不会更改消息:
/Library/Developer/XcodeServer/ProvisioningProfiles
我关闭了机器人中的“执行分析操作”,它确实摆脱了消息,但重新开启,或者打开“执行存档操作”,重新引入它,这样就不是一个选项了(同样,我想要进行静态分析,这就是为什么它首先打开了。)
假设目前Xcode Server的签名身份列表已损坏,我将如何在Server.app之外重置它们(因为我已经删除了那里的开发团队)?我找到了几个目录,似乎是一些故障排除和/或备份恢复的候选者,但是我不知道在不确定它们的用途的情况下乱七八糟。
/Library/Developer/XcodeServer/Certificates
/Library/Developer/XcodeServer/Keychains
我注意到我的配置文件已于5月20日到期, 2016 。这意味着我的旧版本在两天前(2015年5月20日)到期,这是我最后一次成功(5/19)和第一次失败(5/21)版本之间的过期。
现在,了解这些失败的根源后,问题现在变成:如何清除导致重复的旧配置文件(或证书等)?
服务器在Yosemite(10.10.3),Server(4.1)和Xcode(6.3.2)上是最新的。
更新
我正在尝试列出代码签名身份,但是甚至无法让单个“Mac Developer:OS X Server”显示出来,更不用说多次出现了。这些是我尝试过的命令,它们只列出了钥匙串中的非服务器身份:
security find-identity -p codesigning
sudo -u _xcsbuildd security find-identity -p codesigning
sudo -u _xcsd security find-identity -p codesigning
答案 0 :(得分:2)
看起来像服务器中的错误实际上引入了重复的签名身份。我把它报告为rdar://21080937,如果你想欺骗它的话。
为了解决这个问题,我必须了解Xcode Server如何存储签名身份(完全归功于an extremely helpful answer to an unrelated question)。
Xcode Server将开发者计划证书存储在
中/Library/Developer/XcodeServer/Keychains/Portal.keychain
按照以下步骤,我可以打开钥匙串,找到副本,将其删除,然后将其取回。这些步骤改编自上面的答案。
从Server.app退出Developer Portal,删除您遇到问题的开发团队
将Portal钥匙串复制到桌面:
> sudo cp /Library/Developer/XcodeServer/Keychains/Portal.keychain ~/Desktop/
Password:
您的管理员密码
> sudo chown `whoami`:staff ~/Desktop/Portal.keychain
将Portal密钥链密码设置为“123”
> security set-keychain-password -o "`sudo cat /Library/Developer/XcodeServer/SharedSecrets/PortalKeychainSharedSecret`" ~/Desktop/Portal.keychain
New Password:
123
Retype New Password:
123
打开钥匙串访问中的钥匙串:
> open -b com.apple.keychainaccess ~/Desktop/Portal.keychain
使用密码“ 123 ”解锁“门户”钥匙串
找到错误列出的重复键
删除一个(我最近选择了一个修改过的 less ,但可能无关紧要)
锁定“Portal”钥匙串,退出“Keychain Access”
重置Portal密钥链密码:
> security set-keychain-password -p "`sudo cat /Library/Developer/XcodeServer/SharedSecrets/PortalKeychainSharedSecret`" ~/Desktop/Portal.keychain
Password:
您的管理员密码(可选步骤)
Old Password:
123
可能会或可能不会再次询问您的管理员密码,请注意提示。
备份原始钥匙串
> sudo cp /Library/Developer/XcodeServer/Keychains/Portal.keychain /Library/Developer/XcodeServer/Keychains/Portal.keychain.old
将Portal钥匙串复制回来
> sudo cp ~/Desktop/Portal.keychain /Library/Developer/XcodeServer/Keychains/
修复新的钥匙串权限
> sudo chown _xcsbuildd:_xcs /Library/Developer/XcodeServer/Keychains/Portal.keychain
由于系统缓存打开的钥匙串,请重新启动服务器
在Server.app
运行构建,验证一切看起来不错。如果是,请删除钥匙串的备份副本
> rm ~/Desktop/Portal.keychain
> sudo rm /Library/Developer/XcodeServer/Keychains/Portal.keychain.old