Xcode 项目的持续集成?

Posted

技术标签:

【中文标题】Xcode 项目的持续集成?【英文标题】:Continuous Integration for Xcode projects? 【发布时间】:2010-09-17 19:11:43 【问题描述】:

在使用 Hudson 与之前的项目进行持续集成之后,我想为我现在正在处理的 iPhone 项目设置一个持续集成服务器。在做了一些研究之后,似乎没有任何专门为 Xcode 设计的 CI 引擎,但有人已经成功了 using Cruise Control combined with the xcodebuild CLI tool。这里有人试过吗?有哪些 CI 引擎可以很好地与 Xcode 项目配合使用?

我可能会试试 Cruise Control。我将发布我的发现的答案。

【问题讨论】:

评论中的链接没有登录器有效 @yegor256 真的可以用 Xcode 运行 Docker 吗?我没有在 Docker Hub 上找到 OS X 的基础镜像 :( 【参考方案1】:

我在 Mac 上通过 xcodebuild 成功使用了 Hudson。随着 3.0 iPhone sdk 的发布,您可以完全控制要构建项目的目标、配置和 sdk。

就像在 hudson 中创建一个构建步骤并告诉 xcodebuild 构建项目一样简单:

xcodebuild -target "myAppAppStore" -configuration "DistributionAppStore" -sdk iphoneos2.1

前期工作为我带来了回报,因为我的构建无需任何额外思考就可以正常工作。如果有人感兴趣,我已经在我的博客上写了详细的描述。

iPhone app distribution made easy

【讨论】:

【参考方案2】:

Apple 刚刚(2013 年 6 月 10 日)为 OSX Mavericks(OS X 10.9) 发布了一个新的持续集成平台,这是我之前见过的集成度最高的持续集成解决方案。 它可从 developer.apple.com 获得,此页面的此处有详细信息:

https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_guide-continuous_integration/

我建议查看有关该主题的 wwdc 2013 演示文稿。

【讨论】:

这太棒了! Xcode 终于有了一些合适的测试工具【参考方案3】:

詹金斯工作正常。 您可以通过编写自己的 shell 脚本来构建您的 xcode 项目,然后让 Jenkins 运行它,或者您也可以使用 xcode 插件。

但你必须注意权限问题。只需对 Jenkins 配置稍作调整,您就可以在很短的时间内管理您的 CI 服务器。

【讨论】:

【参考方案4】:

Jenkins 似乎对某些人很有效。 (虽然,我之前从未使用过任何 CI 服务器。)

https://wiki.jenkins-ci.org/display/JENKINS/Xcode+Plugin

【讨论】:

【参考方案5】:

复活这个线程。我没有找到令人满意的解决方案来在构建服务器上通过单元测试自动构建 XCode,因此我进行了一些调查和编码。结果是this blog post 解释了这一切,this Ruby script 将 OCUnit 输出从 xcodebuild 转换为 JUnit 用于测试报告的 XML 格式。我选择的构建服务器是Hudson。

2012 年 3 月 2 日更新:我已对此进行了更新,以使用一些自定义 shell 脚本来构建和运行。可用here。它不仅有利于持续集成,也有利于在您自己的机器上从命令行构建。

【讨论】:

【参考方案6】:

如果您不介意生活在最前沿,我刚刚为 CruiseControl 提交了xcode builder。

【讨论】:

【参考方案7】:

我已经将 CruiseControl 与 Xcode 一起使用(类似于 Pragmatic Automation 的建议)并取得了相当大的成功。我对 CruiseControl 也很熟悉,它的配置格式设置相对可怕。

我也使用 BuildBot 取得了不错的效果,但发现它的优势并不能真正满足我的需求(跨多个不同系统构建和报告的分布式从站)。配置 buildbot 设置本身就是一门艺术,尽管它并不困难。本质上都是用python编写脚本。

自从 Hudson 推出以来,我推荐它作为运行持续集成的途径。它有一个基于 Web 的界面(我认为 CruiseControl 的主要缺陷)并且在它支持的各种系统中非常灵活。您可以非常轻松且非常明显地调用命令行驱动的构建。就是说,我还没有使用 Hudson 和 Xcode 设置实例,而我为其他系统设置了实例,所以这部分是我的猜测。

【讨论】:

【参考方案8】:

我认为您应该仍然可以使用 Hudson。 Hudson 非常灵活,还允许您使用 shell 脚本进行构建:Shell Scripts and Windows Batch Commands

只需输入 xcodebuild。查看 xcodebuild 手册页以了解 xcodebuild 的选项。

【讨论】:

【参考方案9】:

Adium 在 Xcode 中使用buildbot 非常有效。我们编写了一个简单的 makefile,它使用正确的目标和配置调用 xcodebuild,但我很确定这是可选的。

【讨论】:

Adium 岩石! (呃......对于跑题的评论感到抱歉。无法抗拒表达赞赏的机会)

以上是关于Xcode 项目的持续集成?的主要内容,如果未能解决你的问题,请参考以下文章

XCode 持续集成

Xcode 6 上的持续集成

Xcode 服务器、机器人、持续集成和模拟器上的单元测试

Xcode 持续集成和 Mercurial

XCode 持续集成 - 不支持的设备

Xcode Bots Server 持续集成失败