我在尋找一種方式來精簡我們的PHP Web應用程序的一個(如果它的工作原理在此我將這項服務推廣到其他應用程序)的部署過程。水銀自動化部署
我很喜歡這樣的外觀:http://www.springloops.com/,但它是SVN,我們正在使用水銀。
不幸的是我們沒有對我們當前的服務器shell訪問,使一些作品通過FTP將是最好的,如果任何人有任何想法?
我在尋找一種方式來精簡我們的PHP Web應用程序的一個(如果它的工作原理在此我將這項服務推廣到其他應用程序)的部署過程。水銀自動化部署
我很喜歡這樣的外觀:http://www.springloops.com/,但它是SVN,我們正在使用水銀。
不幸的是我們沒有對我們當前的服務器shell訪問,使一些作品通過FTP將是最好的,如果任何人有任何想法?
你會想用鉤子使用水銀的hg archive
命令。它會顯示您指示的修訂(通過標記等)的快照,然後將其導出。
在你的「生產」存儲庫的hgrc你可以有這樣的事情:
[hooks]
changegroup = ./doDeploy.sh
,然後./doDeploy.sh
將不得不在它:
hg archive -r tip /tmp/deployme
ftp /tmp/deployme ftp://remoteserver
你最終不得不各地的所有工作諸如文件權限之類的小故障,從repo中刪除但仍然存在於服務器上的文件等等,但總的來說,這爲系統提供了一個很好的框架,當發佈管理器將更改推送到系統時,它會自動上傳如napshot到活的系統。
這就是我的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
FTPExtension對我來說是運作良好。
我假設在Windows系統上,這只是bat文件而已? – richzilla 2010-04-21 15:16:37
這當然是可能的,或者你可以在Python中進行處理。詳細信息請參閱免費水銀書第10章。 – 2010-04-21 22:29:14
存檔,因爲它導出整個存儲庫,不是恕我直言連續部署的最佳方式(傳輸大小) – 2013-01-13 01:27:09