我正在研究TeamCity和Jenkins的CI服务器。
我的目标是这样:每当有人对我们的仓库进行更改时,CI服务器会将项目中的所有目标构建为.ipa - 准备好在设备上下载/安装。
我使用Mac mini作为构建奴隶,让Teamcity和Jenkins运行起来。它的一部分工作正常。
使用Jenkins XCode插件,我成功地将所有目标构建为.ipa。 我没有和Teamcity一起运气。 XCode插件不允许构建所有目标。相反,您必须在每个构建配置中指定要构建的目标。 我找到了Teamcity的制作人,为了实现我的目标,他们给了我一些涉及元跑者和大量重复的复杂方法。
我宁愿使用shell脚本来构建.ipa,而不是依赖插件。但是,由于我不是剧本忍者,我无法弄清楚如何解决这个问题。
我可以弄清楚如何通过脚本来构建一个目标,但它让我觉得如何构建它们。每次我在项目中创建一个新目标时,我都不想在CI服务器上添加它。服务器应该能够自动构建项目中的所有目标。
......也许有人有更好的解决方案?非常感谢任何帮助。
答案 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的命令行界面)列出它们。