Mac 开发人员使用什么自动构建系统?
我的团队目前正在使用 buildbot 来自动化隔夜和持续集成构建和回归测试。 对于构建和单元测试,构建器只需调用一个脚本,该脚本从 p4 同步源,然后运行 xcodebuild。 回归测试也是由 shell 脚本启动的,并且本身是 shell 脚本和 AppleScript 的组合。 构建全部在一个系统上执行,但随后 buildbot 会触发在具有不同架构和操作系统组合的多台 Mac 上进行测试。 我喜欢 buildbot 的地方是自动触发器(因此只有在构建成功时才运行测试),以及包括瀑布视图以查看总体状态的报告。
然而,我也看到了一些问题。 协调构建的“主”进程要么存在泄漏,要么只有一个巨大的工作集,这意味着它会消耗几千兆字节的内存。 有时网络问题会导致从机丢失; 而不是稍后重试,它只会使构建失败。 事实上,如果从属设备应该被触发进行依赖构建,那么在成功完成之后,它将导致第一个构建失败。
那么你们其他人使用什么来自动化 Xcode 构建和单元测试呢? 这些解决方案对您有何作用? 你有什么可以推荐的吗?
my team is currently using buildbot to automate overnight and continuous-integration builds and regression tests. For builds and unit tests, the builder just invokes a script which syncs the sources from p4 and then runs xcodebuild
. The regression tests are also launched by a shell script, and are themselves combinations of shell scripts and AppleScripts. The builds are all performed on one system but then buildbot triggers tests to happen on multiple Macs, with different architecture and OS combinations. The things I like about buildbot are the automatic triggers (so the tests run only if and when the build succeeds), and the reporting including the waterfall view to see the overall status.
However, I see a number of problems too. The "master" process which coordinates the builds is either leaky or just has a huge working set which means that it consumes a couple of gigabytes of memory. Occasionally network problems mean that a slave will be lost; rather than retrying later it will just fail the build. In fact if the slave is supposed to be triggered for a dependent build, it will fail the first build after it has otherwise successfully completed.
So what are the rest of you using to automate your Xcode builds and unit tests? How do those solutions work for you? Anything you would recommend?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我在 Windows 环境中使用 TeamCity 但我相信它可以在 Mac 上运行并且具有xcode 构建代理。
另一个类似的问题此处。
I use TeamCity in a windows environment but I believe it will work on Mac and has xcode build agents.
Another similar question here.
我们的团队使用 Hudson 和一个脚本,将单元测试输出从 XCode 转换为 NUnit 格式。
Our team use Hudson with a script which converts the Unit Test output from XCode to NUnit format.
我知道这是一个较老的问题,但对于那些使用 TFS 保存 Xcode 项目的人来说,我创建了一个自定义构建活动,以便通过 TFS 更轻松地自动化 Xcode 构建。 该代码托管在 Codeplex 上:http://tfsxcodebuild.codeplex.com/。
希望有人觉得它有用!
I know this is an older question, but for those using TFS to hold their Xcode projects, I created a custom build activity to make automating Xcode builds via TFS easier. The code is hosted on Codeplex here: http://tfsxcodebuild.codeplex.com/.
Hope someone finds it useful!
我们弄清楚了是什么在使用所有内存 - 日志文件 - 旧的 buildbot 永远保留所有日志并将它们保留在内存中(可能直到重新启动)。
较新的 buildbot 可以配置为保留固定数量的历史记录。
应限制 Buildbot 构建日志文件的大小以避免出现问题。
We worked out what was using all the memory - log files - older buildbot keeps all logs forever and keeps them in memory (possibly until a restart).
Newer buildbot can be configured to keep a fixed amount of history.
Buildbot build log files should be limited in size to avoid the problem.
我使用 XcodeBuilder 这是CruiseControl。 当然,我写的有帮助。 :)
但我确实在一个正在出售的 iPhone 应用程序 (Surf) 的真实多人项目中使用了它在应用程序商店中。
I use the XcodeBuilder that's part of CruiseControl. Of course it helps that I wrote it. :)
But I did use it on a real multiple person project for an iPhone app (Surf) that's for sale in the app store.
现在三年过去了,我对这个问题有了自己的答案。 我正在使用 Jenkins,主要是因为它提供的插件。 它有一个插件,用于在 Xcode 项目(或工作区中的方案)中构建目标。 有一个插件可以运行 Clang 静态分析器。 它与我的错误跟踪系统交互,它也会自动将构建推送到 Testflight。
Now that it's three years later I have my own answer to provide to this question. I'm using Jenkins, mainly for the plug-ins that it provides. It has a plug-in for building targets in Xcode projects (or schemes in workspaces). There's a plug-in to run the Clang static analyzer. It interfaces with my bug-tracker system, it'll automatically push builds to Testflight too.