为iPhone应用程序设置自动构build服务器的最佳实践?

我正在为我们的iphone应用程序设置一个自动化的夜间构build服务器,并寻找什么可行,什么不可行的build议。

基本上,至less每天晚上运行所有的unit testing,并发布一个新的adhoc构build到我们的内部网站。

所有的开发人员使用笔记本电脑(这将closures一夜之间),所以我正在考虑让一个专用的Mac Mini来做到这一点。

我不确定是否应该获得标准的Mac OS X或服务器版本。

至less在第一次尝试时,我正在考虑使用从crontab运行的简单shell脚本来完成实际的工作。 将来一个完整的持续集成服务器(哈德逊等)将是很好的。

我已经通过search发现了一些文章,尽pipe它们很简短:

http://nachbaur.com/blog/how-to-automate-your-iphone-app-builds-with-hudson

Continuous Integration for iPhone/Xcode projects

而且这个stackoverflow问题有一些有用的软件信息(虽然现在是两岁了):

Xcode项目的持续集成?

任何指导人可以给他们如何设置生成服务器和任何潜在的问题将不胜感激。

谢谢!

约瑟夫

哈德森(或其叉jenkins )真的不难设立; 这是我们内部使用的。 我们不只是从它运行iPhone构build – 事实上,只有一个独立的Mac mini设置为iPhone构build,这是一个相对较新的增加。 一段时间以来,我们已经为其他六个不同的平台上的其他奴隶。

您可以通过Meet Hudson页面上的“testing驱动器”链接进行操作,以了解如何轻松设置。 (这是我上面卖的东西之一,开始真的很容易,但是仍然是可configuration的,可扩展的,足够强大的,足以让我们在过去的几年中不断扩大,取而代之的是一堆非常棒的手工操作,尽pipe是作者,我仍然很高兴看到这样的脚本和程序可以rest。)

我们有一个哈德森后端运行在一个强大的Mac OSX服务器上,但没有理由不能在任何地方(Linux,Windows,Mac)运行它。

至于configuration它的build设 – 它是在项目configuration大约6行的shell脚本,大多数调用xcodebuild并传递它的项目和-configuration参数。

例:

 cd ${WORKSPACE}/Engineering/ set -e set -v xcodebuild -project foo.xcodeproj -alltargets -configuration Distribution clean xcodebuild -project foo.xcodeproj -alltargets -configuration Release clean xcodebuild -project foo.xcodeproj -alltargets -configuration Debug clean xcodebuild -project foo.xcodeproj -alltargets -configuration Distribution xcodebuild -project foo.xcodeproj -alltargets -configuration Release xcodebuild -project foo.xcodeproj -alltargets -configuration Debug 

我们还没有build立奴隶作为服务运行 – 这是在TODO名单上。 现在我们只要重启mini就可以通过JNLP启动它。

存储库是SVN,哈德森大师负责记住我们的https身份validation信息。

我们主动使用Email-ext插件,并且有一个构build超时插件和一个审计线索插件,因为有很多其他人使用这个系统,而且有些构build不是很好。 我们已经使用了警告插件和静态代码分析插件进行了简单的实验,需要让更多的项目使用这些插件 (我们通常将警告作为构build错误,但是我们在一些项目中使用PC-Lint和其他工具;输出汇总和跟踪这里是非常好的)。 最后是最重要的Chuck Norris和Emotional Hudson插件。

我们目前没有在任何iphone版本上运行unit testing(羞愧!),我们只是使用内置在哈德森中的普通“归档工件”function来存储构build。 这些可以通过授权用户通过哈德森网页界面访问。 我毫不怀疑在框架中运行你的unit testing并不难。

</变形金刚迷>

我们唯一真正的问题就是在Mac mini上与法新社和中小企业有关 – 与哈德森根本没有任何关系,更多的只是我们的内部networking基础设施。 迷你对我的口味有点慢 – 我们通常运行相当健壮的构build奴隶的理论是快速自动翻译是一件好事。 在某些时候,迷你可能会因为这个原因而赠送SSD。

我意识到自从这个线程上次更新以来已经有一段时间了,但是从那以后,我又遇到了一个新的连续集成(CI)服务器。 或者实际上它不是新的,但是它对Mac / IOS构build的集成支持是新的:)

它来自JetBrains的TeamCity产品, url为:http://www.jetbrains.com/teamcity/

我们成功地在我为构buildJava项目而工作的客户端上使用它,但是我们也将为iOS构build设置,因为这正在成为我们产品范围的一个重要部分。

它相当简单的安装,可以运行任何平台,但build设者必须运行一台Mac电脑。

希望这可以帮助 :)

Xcode 5结合了Mac OS X 10.9(Mavericks)和OS X Server。 OS X服务器现在有一个Xcode服务器组件,这对运行自动化testing非常有用。

它可以做到:

  1. build立(+检查警告)
  2. 分析(即铛静态分析)
  3. 在iOS模拟器+连接到USB的所有连接设备上运行testing

为了在设备上运行testing,它以简单和易于安装的巨大优势击败了jenkins / hudson。 然而,Xcode服务器(从Xcode 5.1起)是完全不可取的 – 如果你想添加自定义的性能/内存使用情况/不pipe怎样,你不能 – 对于这种function,jenkins / Hudson要好得多。