我正在寻找为我们的iphone应用程序设置自动夜间构建服务器,并寻找有效和无效的建议。
基本上,至少每晚运行所有单元测试并向我们的内部网站发布新的adhoc构建。
所有开发人员都使用笔记本电脑(这将在一夜之间关闭),所以我正在考虑购买专用的Mac Mini来实现这一目标。
我不确定我是否应该购买标准的Mac OS X或服务器版本。
至少在第一次尝试时,我正在考虑使用从crontab运行的简单shell脚本来完成实际工作。将来,一个完整的持续集成服务器(哈德森等)会很好。
我已经通过搜索找到了一些文章,尽管它们很简短:
http://nachbaur.com/blog/how-to-automate-your-iphone-app-builds-with-hudson
http://blog.jeffreyfredrick.com/2008/11/27/continuous-integration-for-iphonexcode-projects/
此堆栈溢出问题还有一些有用的软件信息(虽然现在已经有两年了):
Continuous Integration for Xcode projects?
人们可以就如何设置构建服务器以及任何潜在问题提供任何指导,我们将不胜感激。
谢谢!
约瑟夫
答案 0 :(得分:14)
哈德森(或其叉子Jenkins)真的不难设置;这是我们内部使用的。我们不只是从它运行iphone构建 - 实际上,只有一个单独的mac mini设置用于iphone构建,而且它是一个相对新近的添加。一段时间以来,我们已经为其他不同的平台安装了六个其他的奴隶。
您可以通过Meet Hudson页面上的“试用版”链接进行播放,以了解设置的简便程度。 (这是卖给我的东西之一;它很容易上手,但仍然可配置,可扩展,功能强大,足以让我们在过去几年中不断扩展。它取代了一堆真正的手 - 滚动的脚本和程序,尽管是作者,我很高兴看到安息。)
我们在强大的Mac OSX服务器上运行hudson后端,但没有理由你不能在任何地方运行它(linux,windows,mac)。
至于为构建配置它 - 在项目配置中大约有6行shell脚本,主要是调用xcodebuild
并传递-project
和-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
我们还没有设置奴隶作为服务运行 - 这是在TODO列表中。现在我们只要重新启动mini就可以通过JNLP启动它。
存储库是SVN,哈德森主人负责为我们记住https身份验证信息。
我们积极使用Email-ext插件,并有一个构建超时插件和审计跟踪插件,因为有很多其他人使用该系统,而且一些构建不是很好。我们已经使用Warnings插件和Static Code Analysis plugins进行了简要的实验,需要在更多项目中使用这些插件(我们通常在构建中将警告视为错误,但我们确实使用了PC-Lint和其他工具在某些项目上;在这里汇总和跟踪输出是非常好的)。最后是最重要的Chuck Norris和Emotional Hudson插件。
我们目前没有在任何iphone版本上运行单元测试(羞耻!),我们只是使用hudson内置的普通“归档工件”功能来存储构建。这些可以通过hudson Web界面通过授权用户访问。我毫不怀疑你在框架内运行单元测试并不困难。
< /想说我>
我们唯一真正的问题与mac mini上的AFP和SMB有关 - 与hudson完全没有关系,更多的是我们的内部网络基础设施。而mini对我的口味来说有点慢 - 我们通常运行相当强壮的构建奴隶,因为快速自动转换是一件好事。出于这个原因,迷你可能会在某种程度上被赋予SSD。
答案 1 :(得分:6)
我意识到自从这个线程上次更新以来已经有一段时间了,但从那时起我遇到了一个新的连续集成(CI)服务器。或者实际上它不是新的,但它对Mac / IOS构建的集成支持是新的:)
JetBrains的TeamCity产品可在http://www.jetbrains.com/teamcity/
获得我们在为建设Java项目而工作的客户端成功使用它,但我们也将为IOS构建设置,因为它正在成为我们产品系列的更大部分。
它相当容易设置并且可以运行任何平台,但构建者必须运行Mac计算机。
希望这会有所帮助:)
答案 2 :(得分:0)
一个新选项是Xcode 5与Mac OS X 10.9(Mavericks)和OS X Server相结合。 OS X Server现在有一个Xcode服务器组件,适合运行自动化测试。
它可以做到:
为了在设备上运行测试,它比jenkins / hudson更加简单,易于设置。然而,Xcode服务器(从Xcode 5.1开始)是完全不可自定的 - 如果你想添加性能/内存使用/自由的自定义图形,你不能 - 为了那种力量,jenkins / Hudson要好得多。