那么,根据您的经验,最好的方法是什么?是否有一种在构建自动化工具中也可以编写脚本/触发的安全方式?
编辑:我应该提到这是 windows/.net,我将部署到 iis6
那么,根据您的经验,最好的方法是什么?是否有一种在构建自动化工具中也可以编写脚本/触发的安全方式?
编辑:我应该提到这是 windows/.net,我将部署到 iis6
对于一些项目,我使用Capistrano来推出生活。它建立在 ruby 之上,使部署脚本编写变得超级容易,并且使用 ssh。
在其他项目中,我有一个小型部署应用程序,它使用 bash 将 svn 导出到临时目录,然后将其 rsync 到实时服务器。你可以让 rsync 使用 ssh。
我非常喜欢 Capistrano 方法,即使您的项目不在 ruby/rails 中。
制作您的实时站点目录的副本,使用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 失败,您可能会遇到更严重的问题。)
@Neall,我会在第二行添加一个,因为如果由于任何原因失败set -e
,您不希望替换实时站点。如果它的任何命令失败,则导致脚本退出。rsync
set -e
编辑:set -e
应该是脚本中的第一件事,就在#!/bin/bash
.
我将支持Capistrano的建议,但如果您正在寻找基于 GUI 的解决方案,您可以尝试Webistrano前端。干净的、基于 ssh 的、健全的部署和回滚语义以及通过 ruby 的简单脚本和可扩展性。
您总是可以编写一个小型客户端/服务器应用程序,在源端加密、推送文件,然后在目标端解密。这是一点工作,但可能是微不足道的。只要您的自动化工具支持在文件系统中执行某些内容(我认为所有人都这样做),它就可以编写脚本。
唯一的缺点是,如果您不做更多工作,您可能无法在集成环境中获得有意义的错误消息(尽管取决于您的设置,这可能就像向标准输出发送错误消息一样简单)。
嗯,在这里我们使用临时“服务器”在实时环境中进行测试(实际上,它是生产服务器上的 apache 虚拟主机)和araxis 合并(一个非常智能的逐行文件比较工具)来同步开发和分期。
一旦经过测试,就可以了;替换生产 webroot 上的文件 :)
/mp
在我做的一份自由职业中,我们建立了三个独立的环境。
工作流程如下: