有没有一种方法/插件可以将新的Xcode服务和/或新的Apple CI与Jenkins集成?
让Jenkins服务器+ OSX构建从属连接的主要问题ssh
是单元测试不起作用,因为iOS模拟器需要一个在此配置中不存在的图形环境.
我希望可以将Xcode服务(支持单元测试)与Jenkins集成.
可能是使用Apple CI就足以满足我的需求,但这个问题的目的是将Xcode服务与Jenkins集成.
我对现有的Xcode Jenkins插件有经验,但似乎不支持全新的Xcode服务或新的Apple CI.我特别热衷于通过CI进行单元测试(使用旧方式在ssh会话中无法正常工作).
我想了解以下与Jenkins和ssh
连接的构建奴隶无关的问题的信息:
关于目前与Jenkins和ssh
连接的构建从站一起工作的事情的信息仍然应该与Xcode服务集成一起工作:
${BUILD_NUMBER}
,并且Jenkins根据其内部版本号设置此环境变量.当Apple CI执行构建时,很可能会设置内部版本号.)Apple CI == Xcode service
Apple CI 是否只使用 Xcode服务.在后一种情况下,Xcode服务就像一个智能构建从属服务器,Jenkins可能会使用它来进行构建和测试,但是自己管理构建数量和产品.我将Jenkins与Xcode插件配置为通过将测试构建操作添加到Custom xcodebuild参数设置来运行单元测试.有关让Jenkins使用Xcode 5运行单元测试的更多信息,请参阅此问题.
现在我已经运行了,它似乎将NSLog语句的控制台输出或最终** TEST SUCCEEDED **
消息与测试结果混合在一起,因此偶尔会将解码器绊倒,将单元测试结果转换为Jenkins所需的JUnit格式.
例如,Jenkins日志显示如下输出:
Test Case '-[Redacted_Conversion_Tests testConvertTo_ShouldSetamount_WhenamountIsNotZero]' passed (** TEST SUCCEEDED **
0.000 seconds).
Test Case '-[Redacted_Conversion_Tests testConvertTo_ShouldSetamount_WhenamountIsZero]' started.
Run Code Online (Sandbox Code Playgroud)
什么时候它应该是:
Test Case '-[Redacted_Conversion_Tests testConvertTo_ShouldSetamount_WhenamountIsNotZero]' passed (0.000 seconds).
Test Case '-[Redacted_Conversion_Tests testConvertTo_ShouldSetamount_WhenamountIsZero]' started.
** TEST SUCCEEDED **
Run Code Online (Sandbox Code Playgroud)
我进一步调查了这一点,并把詹金斯拉出了画面.如果我在命令提示符下直接运行xcodebuild命令:
xcodebuild \
-workspace project.xcworkspace \
-scheme Tests \
-configuration Release \
-sdk iphonesimulator7.0 \
-destination "platform=iOS Simulator,name=iPhone Retina (4-inch),OS=latest" \
test
Run Code Online (Sandbox Code Playgroud)
输出总是很好,有序.
但是,如果我将输出传递给另一个程序或重定向到文件:
xcodebuild \
-workspace project.xcworkspace \
-scheme Tests \
-configuration Release \ …
Run Code Online (Sandbox Code Playgroud)