2010-04-21 15 views
9

Jestem w trakcie poszukiwania sposobu na usprawnienie wdrożenia jednej z naszych php aplikacji internetowych (jeśli to działa, będę ją rozpowszechniać w innych aplikacjach).Zautomatyzowane wdrażanie Mercurial

Bardzo podoba mi się ten wygląd: http://www.springloops.com/, ale to SVN i używamy mercurial.

Niestety, nie mamy dostępu do naszego obecnego serwera, więc coś, co działa na ftp, byłoby najlepsze, jeśli ktoś ma jakieś pomysły?

Odpowiedz

9

Będziesz chciał użyć polecenia mercurial za hg archive z haka. Wykonuje migawkę wskazanej rewizji (za pomocą tagu itp.), A następnie ją eksportuje.

W swojej „produkcji” hgrc repozytorium można mieć coś takiego:

[hooks] 
changegroup = ./doDeploy.sh 

a następnie ./doDeploy.sh musiałby w nim:

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

Skończysz konieczności obejść wszystko rodzaje drobnych błędów, takich jak uprawnienia do plików, pliki, które zostały usunięte z repozytorium, ale nadal istnieją na serwerze itp., ale ogólnie stanowią dobre ramy dla systemu, który po wprowadzeniu zmian, które zostały do ​​niego wysłane przez menedżera ds. wydań, automatycznie ładuje pliki tak jak napshot do systemu żywego.

+0

Zakładam, że w systemie Windows będzie to po prostu plik nietoperza zamiast? – richzilla

+0

Jest to z pewnością możliwe, lub możesz to zrobić w python. Więcej informacji na ten temat znajduje się w rozdziale 10 wolnej książki mercurial. –

+0

archiwum, ponieważ eksportuje całe repozytorium, nie jest IMHO najlepszym sposobem na wdrażanie ciągłe (wielkość transferu) –

2

To jest moje 5 centów: To jest moje 5 centów: Część ftp odpowiedzi działa tylko w przypadku projektów bez podkatalogów (FTP ich nie obsługuje), jeśli chcesz zachować naprawdę wszystko zsynchronizowane tutaj jest mój skrypt sh (używa LFTP, opcja -e usuwa pliki zdalne, które już nie są obecne lokalnie):

#!/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 
Powiązane problemy