2008-08-20 127 views

回答

6

对于一些项目,我用Capistrano推去住。它建立在ruby之上,使部署脚本编写超级简单,并使用ssh。

在其他项目上我有一个使用bash中做一个SVN导出到一个临时目录,然后rsync的它交给了直播服务器一个微小的部署应用程序。你可以让rsync使用ssh。

我非常喜欢的Capistrano的方法,即使你的项目是不是在的Ruby/Rails。

0

您可以随时编写一个小型客户端/服务器应用程序,在源处加密,推送文件,然后在目的地解密。这是一点点工作,但可能是一个微不足道的数额。只要您的自动化工具支持在文件系统中执行某些操作(我认为所有操作都可以),它就是可编写脚本的。

唯一的缺点是,您可能无法在集成环境中获得有意义的错误消息,而无需您做更多工作(尽管取决于您的设置,这可能与发送错误消息标准输出)。

0

HM,在这里我们使用的测试目的登台“服务器”上的真实环境(实际上,在生产服务器上的一个Apache虚拟主机)和araxis merge(一个真正的智能逐条线文件比较工具)同步开发和分期。

一旦其测试的,公平的。更换生产根目录中的文件:)

/MP

4

这似乎像这类事情,可以很容易与SFTP来完成。对于Windows,请查看PuTTY(psftp和pscp)或WinSCP,对于Unix,请参阅rsyncOpenSSH

1

复制您的实时网站目录,使用rsync以最新版本更新该副本,然后重命名实时和更新的目录,以便更新后的版本现已生效。

在bash:

#!/bin/bash 

set -e 
cp -R /var/livesite /var/newversion 
rsync [email protected]:/var/readytogolive /var/newversion 
mv /var/livesite /var/oldlivesite 
mv /var/newversion /var/livesite 

中提琴!

编辑:@Ted珀西瓦尔 - 这是个好主意。我甚至不知道“set -e”。更新的脚本。编辑:在特德的建议再次更新(虽然我认为它仍然会工作,如果某种方式c​​p命令失败,并且如果cp失败,你可能有更严重的问题。)

1

@Neall,我会添加一个set -e秒行,因为你不希望被替换的直播现场做,如果rsync由于某种原因失败。如果任何命令失败,set -e会导致脚本退出。

编辑:set -e应该是脚本中的第一件事,在#!/bin/bash之后。

1

我会继续推荐Capistrano,但如果您正在寻找基于GUI的解决方案,您可以尝试使用Webistrano前端。清理,基于ssh的,理智的部署和回滚语义,以及通过ruby提供的简单脚本和可扩展性。

0

在做了一个自由职业,我们设立了三个独立的环境。

  • 开发服务器,使用CruiseControl继续运行构建。任何检入都会触发构建。 QA测试在这里完成。
  • 测试服务器,用户验收测试已完成。
  • 生产。

的工作流程是如下:在改变SourceControl

  1. 开发人员的检查。
  2. CruiseControl构建并将构建部署到Dev。
  3. Dev进行了质量检测
  4. 通过质量检查后,会运行一个robocopy脚本,将Dev构建部署到Test。
  5. 测试UAT'ed
  6. 测试通过后,ROBOCOPY脚本是部署测试以珠三角跑了。
相关问题