那么,根据您的经验,最好的方式是什么?在构建自动化工具中是否存在可编写脚本/可触发的安全方法?
编辑:我应该提到这是windows / .net,我将部署到iis6
答案 0 :(得分:6)
对于某些项目,我使用Capistrano推出生活。它建立在ruby之上,使部署脚本编写超级简单并使用ssh。
在其他项目中,我有一个很小的部署应用程序,它使用bash对一个临时目录进行svn导出,然后将其同步到实时服务器。您可以使rssh使用ssh。
我非常喜欢Capistrano方法,即使你的项目不在ruby / rails中。
答案 1 :(得分:4)
答案 2 :(得分:1)
制作实时网站目录的副本,使用rsync使用最新版本更新该副本,然后重命名实时和更新目录,以便更新版本现在可用。
在bash中:
#!/bin/bash
set -e
cp -R /var/livesite /var/newversion
rsync user@devserver:/var/readytogolive /var/newversion
mv /var/livesite /var/oldlivesite
mv /var/newversion /var/livesite
中提琴!
编辑:@Ted Percival - 这是一个好主意。我甚至都不知道“set -e”。更新的脚本。编辑:在Ted的建议中再次更新(虽然我认为如果cp命令以某种方式失败,它仍然可以工作,如果cp失败,你可能会有更严重的问题。)
答案 3 :(得分:1)
@Neall,我会在第二行添加set -e
,因为如果rsync
因任何原因失败,您不希望更换实时网站。如果任何命令失败,set -e
会导致脚本退出。
编辑:set -e
应该是脚本中的第一件事,就在#!/bin/bash
之后。
答案 4 :(得分:1)
我将推荐Capistrano,但如果你正在寻找基于GUI的解决方案,你可以尝试Webistrano前端。基于ruby的清洁,基于ssh,理智的部署和回滚语义以及简单的脚本和可扩展性。
答案 5 :(得分:0)
您总是可以编写一个小型客户端/服务器应用程序,它在源代码加密,推送文件,然后在目标位置解密。这是一些工作,但可能是一个微不足道的数额。只要您的自动化工具支持在文件系统中执行某些操作(我认为都可以),它就是可编写脚本的。
唯一的缺点是,如果您没有更多的工作,您可能无法在集成环境中获得有意义的错误消息(尽管取决于您的设置,这可能就像向stdout发送错误消息一样简单)。
答案 6 :(得分:0)
嗯,我们在这里使用暂存“服务器”进行实时环境测试(实际上,它是生产服务器上的apache虚拟主机)和araxis merge(一个非常智能的逐行文件)比较工具)同步开发和分期。
一旦经过测试,只需;替换生产webroot上的文件:)
/ MP
答案 7 :(得分:0)
在我做过的自由职业中,我们建立了三个单独的环境。
工作流程如下: