无法通过Jenkins上的xcodebuild从命令行执行测试

时间:2014-11-11 11:01:02

标签: ios xcode unit-testing command-line jenkins

我正在使用以下命令执行测试:

xcodebuild test -workspace MyApp.xcworkspace -scheme MyScheme -destination 'platform=iOS Simulator,name=iPhone 6,OS=8.1'

这在本地工作正常,但是当我在Jenkins上尝试它时,它失败并出现以下错误:

  

xcodebuild test -workspace MyApp.xcworkspace -scheme MyScheme -destination'platform = iOS Simulator,name = iPhone 6,OS = 8.1'

     

xcodebuild:错误:无法找到与提供的目标匹配的目标   说明符:{platform:iOS Simulator,OS:8.1,name:iPhone 6}

     

找不到请求的设备,因为没有可用的设备   符合要求。

     

“MyScheme”计划的可用目的地:

     

构建步骤   '执行shell'将构建标记为失败

     

完成:失败

所以我在Jenkins上启动了Xcode GUI来检查iPhone 6模拟器是否存在,它就在那里。另一个有趣的事情是当我运行相同的xcodebuild命令而没有在本地指定目标的名称和操作系统时,我得到所有可用模拟器的列表,如下所示:

  

“MyScheme”计划的可用目的地:{platform:iOS   模拟器,id:683233C4-EC2B-48A3-826B-10EF62A875CD,操作系统:8.1,名称:iPad   2} {platform:iOS模拟器,   id:6358A6F5-2FD0-4377-BD32-0A2C3329276D,OS:8.1,name:iPad Air} {   平台:iOS模拟器,id:224533ED-94DA-46CC-B1DB-1781A1C80710,   操作系统:8.1,名称:iPad Retina} {平台:iOS模拟器,   id:D114BC7E-A913-4063-A349-C119BAFC06DA,OS:8.1,name:iPhone 4s} {   平台:iOS模拟器,id:7AF6D6F4-C6BC-4A47-B83C-3A4B43ABE0DD,   操作系统:8.1,名称:iPhone 5} {平台:iOS模拟器,   id:BE82D607-466A-43E5-863D-6A05F217C117,OS:8.1,name:iPhone 5s} {   平台:iOS模拟器,id:0AFCC9AB-7C59-48C7-9BFB-FBF4865B7A63,   操作系统:8.1,名称:iPhone 6 Plus} {平台:iOS模拟器,   id:D183FF05-3023-4FB5-BEA0-290EA881040A,操作系统:8.1,名称:iPhone 6} {   平台:iOS模拟器,id:26038DBD-791C-421E-99F4-9153CA726A2F,   操作系统:8.1,名称:可调整大小的iPad} {平台:iOS模拟器,   id:31B2F0AE-3547-4189-A561-CD2088F6C645,操作系统:8.1,名称:可调整大小的iPhone   }

但是当我在Jenkins上做同样的事情时,这个列表是空的。

我在本地和Jenkins上使用Xcode版本6.1(6A1052d),我的方案是正确共享的,所以当我在Jenkins上启动时,我可以在GUI中看到它们。我不确定它是否相关,但我正在使用工作区清理插件,我在构建Jenkins之前删除了所有派生数据。

修改 我发现当使用 generic / 预先设置目标值时,我在Jenkins上获得了正确的模拟器列表,它仍然抱怨我找不到要运行的模拟器,即使我使用的是在名单上:

  

xcodebuild test -workspace MyApp.xcworkspace -scheme MyScheme   -destination'通用/平台= iOS模拟器,名称= iPhone 6,操作系统= 8.1'

     

xcodebuild:错误:无法找到与提供的目标匹配的目标   目标说明符:{platform:iOS Simulator,OS:8.1,名称:iPhone   6}

     

找不到请求的设备,因为没有可用的设备   符合要求。

     

“MyScheme”计划的可用目的地:{   平台:iOS模拟器,ID:20D0A659-A25A-40E1-9C11-FC6ECA004012,   操作系统:8.1,名称:iPad 2} {平台:iOS模拟器,   id:7B5DF104-BE34-415F-8818-3907B6CB9C63,OS:8.1,名称:iPad Air} {   平台:iOS模拟器,ID:2DDF024E-811D-4D93-BD8E-EF34BFC9D8CA,   操作系统:8.1,名称:iPad Retina} {平台:iOS模拟器,   id:FFE95D35-B9DD-449E-83D0-50777BF5B783,操作系统:8.1,名称:iPhone 4s} {   平台:iOS模拟器,id:EF5A0D8A-6A1F-492C-B451-8F3B8B5EC5EE,   操作系统:8.1,名称:iPhone 5} {平台:iOS模拟器,   id:A1FCF8DA-BD9F-4ABC-8E0A-4B8547362274,OS:8.1,name:iPhone 5s} {   平台:iOS模拟器,id:1B75E350-7FC8-4407-8116-F3674F3AC187,   操作系统:8.1,名称:iPhone 6 Plus} {平台:iOS模拟器,   id:694CAA87-765D-4FDF-8B27-75E5B537F48E,OS:8.1,name:iPhone 6} {   平台:iOS模拟器,id:FF5588C0-14B5-4303-A2AC-9ACF63B1852C,   操作系统:8.1,名称:可调整大小的iPad} {平台:iOS模拟器,   id:E402C9C9-97BA-4909-96B3-3D3C7F6CCC3B,OS:8.1,名称:可调整大小的iPhone   }

     

构建步骤'执行shell'将构建标记为失败

     

完成:失败

1 个答案:

答案 0 :(得分:1)

原来Jenkins使用的用户没有足够的权限。当我创建另一份工作并尝试签署存档时,我想出来了。默认情况下,Jenkins使用'jenkins'用户来做东西,但是如果你和其他用户一起ssh或屏幕分享到你的构建服务器,那么你就搞错了。我决定删除我的Jenkins守护程序,而是使用JenkinsApp