2010-04-21 1 views
9

저는 PHP 웹 응용 프로그램 중 하나의 배포를 능률화하는 방법을 찾고 있습니다 (이 도구가 작동하는 경우 다른 응용 프로그램으로 배포 할 예정입니다).Mercurial 자동 배포

저는이 모양을 아주 좋아합니다 : http://www.springloops.com/,하지만 SVN이고 우리는 수은을 사용하고 있습니다.

불행히도 현재 서버에 대한 셸 액세스가 없으므로 누구나 아이디어가 있다면 ftp를 통해 작동하는 것이 가장 좋습니다.

답변

9

수은의 hg archive 명령을 후크에서 사용하고 싶습니다. 사용자가 지정한 개정판의 스냅 샷을 태그 등을 사용하여 가져 와서 내 보냅니다. 당신의 "생산"저장소의 hgrc에서

이 같은 수 :

[hooks] 
changegroup = ./doDeploy.sh 

을 다음 ./doDeploy.sh 그 안에 것 :

hg archive -r tip /tmp/deployme 
ftp /tmp/deployme ftp://remoteserver 

당신은 주변의 모든 일을 할 필요하게 될 겁니다 파일 권한과 같은 종류의 작은 결함, repo에서 삭제되었지만 서버에 여전히 존재하는 파일 등이 있지만 일반적으로 릴리스 관리자가 변경 사항을 푸시하면 시스템에 좋은 프레임 워크를 제공합니다. 같이 살아있는 시스템에 napshot.

+0

메신저 Windows 시스템에서 가정하면이 파일은 방금 파일이됩니다. – richzilla

+0

그건 분명히 가능합니다. 또는 파이썬으로 처리 할 수 ​​있습니다. 자세한 내용은 무료 수은 책의 10 장을보십시오. –

+0

보관함, 전체 저장소를 내보내기 때문에 IMHO가 Continuos 배포 (전송 크기)를위한 최선의 방법이 아닙니다. –

2

그건 내 5 센트 야. 대답의 ftp 부분은 서브 디렉토리가없는 프로젝트에서만 작동한다. -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