Интеграция хостинга и SVN
Данная статья предназначена для разработчиков, которые работают с SVN и удаленных хостингом с доступом по ftp и ssh, и ограничением на установку чего либо.
Процесс деплоя очень прост, обновление файлов на хостинг, которое реализовано скриптом. Программист формирует код, после выполняется скрипт который заменяет текущие файлы, можно запускать либо автоматически либо вручную.
Технические требования:
Локальный сервер
- SVN хранилище , добавлен в PATH путь к svn.exe
- используется python 2.5, добавлен в PATH путь к python.exe
- есть SSH
Удаленный хостинг
- есть ssh, ftp
- нельзя устанавливать ПО
C:\Program Files\CruiseControl\projects\project1 содержит код проекта, синхронизуруется с продуктивным сервером. Т.е. код на продуктиве совпадает с кодом в папке.
Скрипт синхронизации у меня расположен C:\svn\apply_svn_changes\publish_web_site.py
Пользователь имеет доступ к ssh, ftp
Сайт на удаленном хостинге находится по пути web/project в папке ftp
Запуск скрипта выполняется следующей командой
1 |
> python C:\svn\apply_svn_changes\publish_web_site.py -c "C:\Program Files\CruiseControl\projects\project1\source" --host ftp_user@production.com -p ftp_password -d sites/ms |
Скрипт просматривает папку «C:\Program Files\CruiseControl\projects\project1\source», проверяет версию кода, и сравнивает с версией в хранилище. Таким образом определяет что нужно удалить, а что — скопировать или создать. Для этого используется команда svn diff
.Далее происходит формирование плана выполнения и сохранение его во временной директории.
Затем скрипт просматривает план, соединяется по ftp с хостингом и выполняет план. По окончанию отключается, все изменения фиксирует в лог файл
Скрипт также можно загрузить с ключем —help
1 |
python "C:\svn\apply_svn_changes\publish_web_site.py" --help |