我正在寻找一种方法来简化我们的php web应用程序的部署(如果它在这方面有效,我会把它推广到其他应用程序)。
我很喜欢这样的外观:http://www.springloops.com/,但它是SVN,我们使用的是mercurial。
不幸的是,我们没有shell访问我们当前的服务器,所以如果有人有任何想法,那么通过ftp工作的东西将是最好的。
发布于 2010-04-21 22:35:21
您需要从钩子中使用mercurial的hg archive命令。它会获取您指定的修订版本的快照(通过标签等)然后将其输出。
在您的“生产”存储库的hgrc中,您可能会有如下内容:
[hooks]
changegroup = ./doDeploy.sh然后./doDeploy.sh会在其中包含:
hg archive -r tip /tmp/deployme
ftp /tmp/deployme ftp://remoteserver你最终将不得不绕过各种小故障,比如文件权限,已经从repo中删除但仍然存在于服务器上的文件,等等,但一般来说,这为一个系统提供了一个很好的框架,一旦发布经理将更改推送到它,就会自动将快照上传到活动系统。
发布于 2011-05-18 07:39:45
这就是我的5点意见:答案中的ftp部分只适用于没有子目录的项目(FTP不支持它们),如果你想保持所有的同步,这里是我的sh脚本(它使用LFTP,-e选项远程删除不再存在于本地的文件):
#!/bin/sh
rm -rf /home/user/tmp/deploy/*
hg archive -r tip /home/user/tmp/deploy/
lftp -u username,password your.ftpsite.com << END_SCRIPT
set ftp:ssl-allow no
cd httpdocs/yoursite/
mirror -R -e --only-newer --log=/home/user/lftp.log /home/user/tmp/deploy .
END_SCRIPT
echo "#--- $(date)" >> /home/user/lftp.log
exit 0发布于 2012-03-08 05:42:51
FTPExtension对我来说工作得很好。
https://stackoverflow.com/questions/2683800
复制相似问题