首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mercurial自动化部署

Mercurial自动化部署
EN

Stack Overflow用户
提问于 2010-04-21 22:28:08
回答 3查看 4.5K关注 0票数 10

我正在寻找一种方法来简化我们的php web应用程序的部署(如果它在这方面有效,我会把它推广到其他应用程序)。

我很喜欢这样的外观:http://www.springloops.com/,但它是SVN,我们使用的是mercurial。

不幸的是,我们没有shell访问我们当前的服务器,所以如果有人有任何想法,那么通过ftp工作的东西将是最好的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-21 22:35:21

您需要从钩子中使用mercurial的hg archive命令。它会获取您指定的修订版本的快照(通过标签等)然后将其输出。

在您的“生产”存储库的hgrc中,您可能会有如下内容:

代码语言:javascript
复制
[hooks]
changegroup = ./doDeploy.sh

然后./doDeploy.sh会在其中包含:

代码语言:javascript
复制
hg archive -r tip /tmp/deployme
ftp /tmp/deployme ftp://remoteserver

你最终将不得不绕过各种小故障,比如文件权限,已经从repo中删除但仍然存在于服务器上的文件,等等,但一般来说,这为一个系统提供了一个很好的框架,一旦发布经理将更改推送到它,就会自动将快照上传到活动系统。

票数 10
EN

Stack Overflow用户

发布于 2011-05-18 07:39:45

这就是我的5点意见:答案中的ftp部分只适用于没有子目录的项目(FTP不支持它们),如果你想保持所有的同步,这里是我的sh脚本(它使用LFTP,-e选项远程删除不再存在于本地的文件):

代码语言:javascript
复制
#!/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
票数 2
EN

Stack Overflow用户

发布于 2012-03-08 05:42:51

FTPExtension对我来说工作得很好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2683800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档