Hudson(或它的fork Jenkins)真的不难安装;这是我们内部使用的.我们不只是从它运行iphone版本——事实上,只有一个单独的mac mini为iphone版本设置,这是一个相对较新的添加.一段时间以来,我们已经有六个其他平台的奴隶.
你可以通过Meet Hudson页上的"试驾"链接来体验它的设置有多容易.(这是让我对它产生兴趣的原因之一;它很容易入门,但仍然是可配置的、可扩展的,而且功能强大,足以让我们在过go 几年里不断扩展.它取代了一堆乱七八糟的手写脚本和程序,尽管我是这些脚本和程序的作者,但我很高兴看到它们被搁置起来.)
我们的hudson后端运行在一台强大的MacOSX服务器上,但没有理由不能在任何地方(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
我们还没有将从属服务器设置为作为服务运行——这在待办事项列表中.现在,只要重新启动mini,我们就通过JNLP启动它.
存储库是SVN,hudson master负责为我们记住https身份验证信息.
我们积极使用Email-ext插件,并且有一个构建超时插件和一个审计跟踪插件,因为有很多其他人使用该系统,并且一些构建行为不好.我们已经对Warnings插件和Static Code Analysis plugins插件进行了简单的实验,需要在更多的项目中使用它们(我们通常会在构建中出现错误警告,但我们确实在一些项目中使用了PC Lint和其他工具;在这里聚合和跟踪输出非常好).最后是最重要的Chuck Norris和Emotional Hudson插件.
我们目前没有运行单元测试(可惜!)在任何iphone版本上,我们都只使用hudson内置的普通"归档工件"功能来存储版本.这些可以通过授权用户通过哈德逊网络界面访问.我毫不怀疑,在框架内运行单元测试对您来说并不难.
</粉丝>;
我们唯一真正的问题与mac mini上的AFP和SMB有关——与哈德逊一点关系都没有,而只是我们的内部网络基础设施.迷你车对我的口味来说有点慢——我们通常会运行非常健壮的构建奴隶,理论上快速的自动构建周转是件好事.出于这个原因,mini可能会在某个时候获得SSD.