Организация работы программистов с SVN и Jenkins для деплоя
Дано: SVN сервер, Jenkins, который собирает проекты из исходников (вытягивает по SVN) и деплоит их на сервера. Чтобы это максимально быстро было, то машина с Jenkins и SVN находится рядом с серверами на которые он деплоит (в датацентре).
Проблема: когда пропадает интернет (укртелеком будь он неладен) работа программистов остановлена, т.к. SVN сервер находится далеко, не локально.
Думаем перенести SVN сервер в офис к програмистам, но тогда возникает вопрос как быть с Jenkins'ом, тоже переносить (т.к. доступа к локальному SVN из датацентра где сейчас стоит Jenkins нет)? Если все перенесем на офис, то процесс деплоя затянется (в связи с малой скоростью отдачи у укртелекома), т.к. нужно будет время на копирование собранных проектов на сервера, которые в датацентре.
Еще один из вариантов — это подключение второго провайдера и настройка шлюза так, чтобы если у одного провайдера отключился интернет, то автоматически поднялся второй.
Я не знаю как у вас настроен проект, но если ваш Jenkins производит деплой из одной и той же ветки (trunk), то у него должна иметься рабочая копия, которую он апдейтит при каждом деплое. Соответственно он должен выкачивать только изменения, а не всю ветку, а значит трафика должно быть не так уж и много. Думаю можно без труда это проверить подняв Jenkins в вашем офисе и понаблюдав как он будет собирать проект из удаленного репозитория.
Продакшн у нас в защищенной зоне заказчика, куда нельзя просто так получить доступ (а из интернета вообще никак нельзя получить). На компах на которых мы иногда работаем у заказчика даже USB отключены. Так что на продакшн только ручками и sh скриптами.
Советую попробовать копирование через rsync. Он копирует только измененные фрагменты файлов, которые при регулярном развертывании должны быть невелики. В нашем случае это решило похожую проблему.