1

我正在开发我的第一个 Rails 应用程序,并且正在努力寻找一种高效且干净的解决方案来进行自动签出和部署。

到目前为止,我已经查看了CruiseControl.rb(熟悉 CruiseControl.NET)和Capistrano。不幸的是,除非我遗漏了什么,否则他们每个人都只做了我想要的一半(每个人都做了不同的一半)。

对于我到目前为止所看到的:

巡航控制

  • 优势
    • 提交时自动构建存储库签出
    • 还运行单元/功能测试并返回报告
  • 弱点
    • 没有内置的部署机制(到目前为止我能找到的最好的方法是编写自己的 bash 脚本)

卡皮斯特拉诺

  • 优势
    • 专为部署而构建
  • 弱点
    • 必须通过命令启动(即在提交时不进行自动签出)

我已经找到了可以将两者串在一起的方法——即让 CruiseControl ping 存储库以进行更改,在提交时进行检查,运行测试等,然后在完成部署后调用 Capistrano(甚至虽然 Capistrano 也将进行存储库检出)。

基本上,当一切都说完了,我想建立三个项目:

  • 开发人员:结帐/部署完全没有接触。当有人提交一个文件时,有些东西会检查它、运行测试、部署更改并返回报告
  • 阶段:结帐/部署需要单击按钮
  • Prod:按钮单击执行标记签出或从阶段移动文件

我在 .NET 世界中结合使用 CruiseControl.NET 和 MSBuild,它相当简单。我猜这也是 ruby​​ 部署世界中的一种常见模式,但我很容易弄错。

4

3 回答 3

3

我会尝试一下Hudson(免费和开源)。我开始使用 CruiseControl,但每次需要更改设置或添加项目时都必须重新学习 XML 配置。然后我开始使用 Hudson,再也没有回头。Hudson 在网络上或多或少是完全可配置的。它最初是用于 Java 的持续集成工具,但具有其他开发堆栈的插件,例如 .NET 和 Ruby on Rails。有一个 Rake 插件。如果这不起作用,您可以将其配置为在运行 Rake 构建/测试后执行任意命令行。

我还应该补充一点,让 Hudson 继续前进非常容易:

java -jar hudson.war

或者你可以在任何 servlet 容器中放弃战争。

于 2009-07-21T21:56:34.807 回答
1

无论如何,我会使用两个系统来构建和部署。至少有两个原因:您应该能够单独运行它,并且您应该有两个配置文件,一个用于部署,一个用于构建。但是您可以轻松地将这两个系统粘合在一起。

只需创建一个简单的 capistrano 任务,进行测试并向您报告。你可以使用“运行”命令来做任何你想做的事情。

如果您不想要任何命令行工具,那么 2 年前就有 webistrano。

如果您使用 git 作为存储库,可以使用http://github.com/benschwarz/gitnotify/tree/master之类的东西来触发构建部署。

于 2009-07-21T21:45:03.567 回答
0

至少对于开发自动化部署,请查看 git 中可用的钩子脚本:

http://git-scm.com/docs/githooks

我认为您需要关注接收后挂钩脚本,因为它在推送到远程服务器之后运行。

也值得在 github 上查看 Mislav 的git-deploy 。使管理部署非常干净。

http://github.com/mislav/git-deploy

于 2010-01-09T18:01:05.013 回答