Travis-CI:适用于iOS,OSX,tvOS和watchOS的多种方案

时间:2016-01-05 02:45:56

标签: ios macos travis-ci

我有一个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

3 个答案:

答案 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); }