我有一个Xcode工作区,可以为iOS,OS X,tvOS和watchOS构建框架。我想让Travis构建所有四个,但我无法弄清楚如何在travis.yml文件中为xcode_scheme和xcode_sdk指定多个值。
例如,.travis.yml可能看起来像这样(但这仅适用于OS X):
language: objective-c
osx_image: xcode7.2
xcode_workspace: VirtualGameController.xcworkspace
xcode_scheme: VirtualGameControllerIOS
xcode_sdk: iphonesimulator9.2
xcode_scheme: VirtualGameControllerOSX
xcode_sdk: macosx10.11
我的项目位于: Virtual Game Controller
答案 0 :(得分:2)
一个更清晰的变体就是包含构建矩阵中的所需配置,而不是排除所有不需要的配置:
language: objective-c
osx_image: xcode7.2
xcode_workspace: VirtualGameController.xcworkspace
matrix:
include:
- xcode_scheme: VirtualGameControllerIOS
xcode_sdk: iphonesimulator9.2
- xcode_scheme: VirtualGameControllerOSX
xcode_sdk: macosx10.11
- xcode_scheme: VirtualGameControllerTvOS
xcode_sdk: appletvsimulator
- xcode_scheme: VirtualGameControllerWatchOS
- xcode_sdk: watchsimulator
答案 1 :(得分:0)
我想你只是这样做:
emit
答案 2 :(得分:0)
解决方案是使用构建矩阵排除功能,以防止在给定方案的不适当平台上进行编译。在使用4种方案定位4个平台时,动态生成的构建矩阵有16个成员,其中12个是不合适的组合。所以我排除了这12个组合,我留下了我正在寻找的4个构建组合。请注意,在构造矩阵/排除语句时,Travis似乎对白色空间非常挑剔:
$FIND = "your mom";
$REPLACE = "your dad";
$DIR= "/path/to/dir";
$FILES = scandir($DIR);
foreach($FILES as $FILE){
if($FILE == "." || $FILE == "..") continue;
$PATH = "$DIR/$FILE";
$file_contents = file_get_contents($PATH);
$file_contents = str_replace($FIND,$REPLACE,$file_contents);
file_put_contents($PATH,$file_contents);
}