Mercurial автоматизированное развертывание - PullRequest
9 голосов
/ 21 апреля 2010

Я нахожусь в процессе поиска способа упростить развертывание одного из наших веб-приложений php (если оно будет работать, я разверну его в других приложениях).

Мне очень нравится внешний вид: http://www.springloops.com/,, но это SVN, и мы используем Mercurial.

К сожалению, у нас нет доступа оболочки к нашему текущему серверу, поэтому что-то, что работает через ftp, было бы лучше, если у кого-нибудь есть идеи?

Ответы [ 3 ]

9 голосов
/ 21 апреля 2010

Вы захотите использовать команду mercurial hg archive с крючка. Он делает снимок указанной вами ревизии (через тег и т. Д.), А затем экспортирует ее.

В hgrc вашего "производственного" хранилища вы можете получить что-то вроде этого:

[hooks]
changegroup = ./doDeploy.sh

и тогда ./doDeploy.sh будет иметь в нем:

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

В конечном итоге вам придется обходить все возможные мелкие проблемы, такие как права доступа к файлам, файлы, которые были удалены из репозитория, но все еще существуют на сервере, и т. Д., Но в целом это обеспечивает хорошую основу для системы, которая после внесения изменений менеджером выпусков автоматически загружает снимок в работающую систему.

2 голосов
/ 08 марта 2012

FTPExtension хорошо работает для меня.

2 голосов
/ 18 мая 2011

Это мои 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...