我正在开发我的第一个 Rails 应用程序,并且正在努力寻找一种高效且干净的解决方案来进行自动签出和部署。
到目前为止,我已经查看了CruiseControl.rb(熟悉 CruiseControl.NET)和Capistrano。不幸的是,除非我遗漏了什么,否则他们每个人都只做了我想要的一半(每个人都做了不同的一半)。
对于我到目前为止所看到的:
巡航控制
- 优势
- 提交时自动构建存储库签出
- 还运行单元/功能测试并返回报告
- 弱点
- 没有内置的部署机制(到目前为止我能找到的最好的方法是编写自己的 bash 脚本)
卡皮斯特拉诺
- 优势
- 专为部署而构建
- 弱点
- 必须通过命令启动(即在提交时不进行自动签出)
我已经找到了可以将两者串在一起的方法——即让 CruiseControl ping 存储库以进行更改,在提交时进行检查,运行测试等,然后在完成部署后调用 Capistrano(甚至虽然 Capistrano 也将进行存储库检出)。
基本上,当一切都说完了,我想建立三个项目:
- 开发人员:结帐/部署完全没有接触。当有人提交一个文件时,有些东西会检查它、运行测试、部署更改并返回报告
- 阶段:结帐/部署需要单击按钮
- Prod:按钮单击执行标记签出或从阶段移动文件
我在 .NET 世界中结合使用 CruiseControl.NET 和 MSBuild,它相当简单。我猜这也是 ruby 部署世界中的一种常见模式,但我很容易弄错。