使CI服务器将所有XCode目标构建为.ipa

时间:2014-07-02 11:31:21

标签: xcode jenkins continuous-integration teamcity xcrun

我正在研究TeamCity和Jenkins的CI服务器。

我的目标是这样:每当有人对我们的仓库进行更改时,CI服务器会将项目中的所有目标构建为.ipa - 准备好在设备上下载/安装。

我使用Mac mini作为构建奴隶,让Teamcity和Jenkins运行起来。它的一部分工作正常。

使用Jenkins XCode插件,我成功地将所有目标构建为.ipa。 我没有和Teamcity一起运气。 XCode插件不允许构建所有目标。相反,您必须在每个构建配置中指定要构建的目标。 我找到了Teamcity的制作人,为了实现我的目标,他们给了我一些涉及元跑者和大量重复的复杂方法。

我宁愿使用shell脚本来构建.ipa,而不是依赖插件。但是,由于我不是剧本忍者,我无法弄清楚如何解决这个问题。

我可以弄清楚如何通过脚本来构建一个目标,但它让我觉得如何构建它们。每次我在项目中创建一个新目标时,我都不想在CI服务器上添加它。服务器应该能够自动构建项目中的所有目标。

......也许有人有更好的解决方案?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

你应该做什么(代码是bash脚本片段,准备在OS X上运行,除了Xcode的CLI /命​​令行工具之外你不需要安装任何东西):

  • 如果你想对存储库中的每个Xcode项目文件执行此操作,首先应该搜索这些文件(如果你有一个特定的Xcode项目,你可以跳过这个)

    for path in $(find . -type d -name '*.xcodeproj' -or -name '*.xcworkspace')
    

    DO

  • 之后,您可以通过Xcode的命令行工具查询所有共享(!)方案

    if [[ "$project" == *".xcodeproj" ]]; then
      xcodebuild_output=($(xcodebuild -list -project "$project"))
    else
      xcodebuild_output=($(xcodebuild -list -workspace "$project"))
    fi
    
  • 现在你已经拥有了所有方案,所以你可以简单地xcodebuild他们一个接一个

这是我们开发的bash脚本,用于搜索存储库中的每个Xcode项目和每个方案配置:https://github.com/concretebuilder/steps-cocapods-and-repository-validator/blob/master/find_schemes.sh

注意:您需要将方案标记为共享以获取xcodebuild(Xcode的命令行界面)列出它们。