Как я могу автоматически развернуть коммит на сайт? - PullRequest
2 голосов
/ 28 февраля 2012

У меня есть планы настроить SVN-сервер для тестирования.Теперь мой вопрос.Как я могу автоматически развернуть зафиксированные файлы на пути к моему веб-сайту разработки / подготовки?

Я уже говорил, что могу использовать хук после фиксации в SVN, но как я могу настроить это?

Все зафиксированные файлы должны быть развернуты в http://dev.staging.mywebsite.com по пути: / home / www / dev / staging /

И хранилище находится в: / home / svn / mytestscript /

Как я могу это сделать?

Ответы [ 5 ]

9 голосов
/ 29 февраля 2012

Николас Дин : На самом деле плохая идея написать хэнд после фиксации для развертывания.

Aar : И каковы ваши причины?Это не так плохо, чтобы проверить свой сайт, что вы совершили?Каковы ваши аргументы ????

Я должен согласиться с Николас Дин .Проблема в том, что пока вы выполняете развертывание с помощью ловушки post-commit, ваш разработчик ждет завершения коммита.Если на развертывание у вас уходит всего 30 секунд, то это 30 секунд, в течение которых разработчик ждет, пока ваш хук после фиксации завершится.

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


Я предлагаю вам взглянуть на Дженкинс .Jenkins - это то, что называется Continuous Build System .Вы можете настроить Jenkins, чтобы каждый раз, когда разработчик делал коммит, Jenkins выполнял build .Таким образом, вы не привязываете Subversion во время развертывания.

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

В качестве еще одного бонуса Jenkins позволяет вашим разработчикам просматривать историю всех изменений, сборок иразвертывания.Он также может показать историю всех тестирований после начала тестирования.Если вы используете систему отслеживания проблем, такую ​​как Jira, Bugzilla, MantisBF, Track или любое другое популярное, Jenkins может интегрироваться с этими системами, чтобы помочь вам отследить, какая из проблем была решена.

Даже есливам не нужно ничего компилировать (скажем, вся ваша веб-страница - только файлы PHP и JavaScripts), вы можете использовать Jenkins только для развертываний и тестирования и по-прежнему получать от этого большую выгоду.

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

1 голос
/ 28 апреля 2012

Решение (с 2008 года) находится на http://imrannazar.com/Automated-Deployment-with-Subversion, которое развертывается, только если комментарий включает ~~DEPLOY~~.Хотя это не отменяет проблему, о которой упоминал @David W., эта задержка будет сдерживающим фактором для развертывания с каждым коммитом.Хорошо или плохо зависит от команды и проекта!

0 голосов
/ 09 июня 2014

Попробуйте Springloops, это программное обеспечение для автоматического развертывания. Я использую его и считаю, что это отличный инструмент, интегрированный с системой управления задачами BamBam. Проверьте это на http://www.springloops.io

0 голосов
/ 28 февраля 2012
  1. svn diff --summarize в обработках после фиксации. Подробности здесь

  2. Альтернативный вариант 1 (большая передача, больше времени и простоев) - экспорт SVN + удаление всех старых данных + копирование экспортированного дерева

  3. Альтернативный вариант 2 - промежуточный сайт - это дополнительный WC, хук после фиксации просто инициирует svn up на нем

0 голосов
/ 28 февраля 2012

Писать ловушку после фиксации для развертывания - действительно плохая идея.

В лучших решениях используются такие инструменты, как Capistrano (Ruby) или Fabric (Python)).

...