1

我正在研究 TeamCity 和 Jenkins,用于 CI 服务器。

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

我使用 Mac mini 作为构建从站,让 Teamcity 和 Jenkins 启动并运行。它的那部分工作正常。

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

我宁愿使用 shell 脚本构建 .ipa,而不是依赖插件。但是,由于我不是脚本忍者,所以我不知道该怎么做。

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

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

4

1 回答 1

1

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

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

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

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

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

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

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

于 2014-07-03T08:59:09.610 回答