Hudson(或其分叉Jenkins http://jenkins-ci.org/)其实并不难设置;这是我们内部使用的。我们不只是用它来运行 iphone 构建——事实上,只有一台单独的 mac mini 是为 iphone 构建而设置的,而且它是一个相对较新的添加。一段时间以来,我们已经在其他不同平台上安装了六个其他奴隶。
您可以通过“试驾”链接来玩它认识哈德森 http://wiki.hudson-ci.org/display/HUDSON/Meet+Hudson页面以了解设置是多么容易。 (这是吸引我的地方之一;它真的很容易上手,但仍然是可配置的、可扩展的,并且足够强大,足以让我们在过去几年中不断扩展。它取代了一堆非常笨拙的手工 -尽管我是这些脚本和程序的作者,但我很高兴看到这些脚本和程序被安息了。)
我们的 hudson 后端运行在强大的 Mac OSX 服务器上,但你没有理由不能在任何地方(linux、windows、mac)运行它。
至于构建的配置——项目配置中大约有 6 行 shell 脚本,主要是调用xcodebuild
并通过它-project
and -configuration
论据。
Example:
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,hudson master 负责为我们记住 https 身份验证信息。
我们积极利用电子邮件分机 http://wiki.hudson-ci.org/display/HUDSON/Email-ext+plugin插件,并有一个构建超时插件和一个审计跟踪插件,因为有很多其他人使用该系统,并且某些构建表现不佳。我们已经进行了简短的实验Warnings http://wiki.hudson-ci.org/display/HUDSON/Warnings+Plugin插件和静态代码分析插件 http://wiki.hudson-ci.org/display/HUDSON/Static+Code+Analysis+Plug-ins同样,需要在更多项目中使用它们(我们通常在构建中将警告作为错误,但我们确实在某些项目上使用 PC-Lint 和其他工具;在这里聚合和跟踪输出非常好)。最后是最重要的查克·诺里斯 http://wiki.hudson-ci.org/display/HUDSON/ChuckNorris+Plugin and 情绪化的哈德森 http://wiki.hudson-ci.org/display/HUDSON/Emotional+Hudson+Plugin插件。
我们目前没有在任何 iphone 版本上运行单元测试(可惜!),我们只是使用 hudson 中内置的普通“存档工件”功能来存储版本。授权用户可以通过 Hudson Web 界面访问这些内容。我毫不怀疑,在框架内运行单元测试对您来说并不困难。
粉丝>
我们唯一真正的问题与 mac mini 上的 AFP 和 SMB 有关——与 Hudson 完全无关,更多的是我们的内部网络基础设施。而且迷你版对我来说有点慢——我们通常运行相当强大的构建奴隶,因为我们的理论是快速的自动构建周转是一件好事。由于这个原因,mini 在某些时候可能会被赠送 SSD。