Использовать subversion для развертывания asp.net - вызывает перезапуск appdomain - PullRequest
2 голосов
/ 31 января 2009

Я экспериментирую с использованием Subversion для развертывания обновлений в моем приложении ASP.Net, одна проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда рабочая копия (содержащая сборку) обновляется, папка ".svn" внутри bin обновляется и это вызывает перезапуск домена приложения ASP.Net. Я не хочу, чтобы это произошло, если что-то в мусорном ведре фактически не изменилось.

Есть ли способ заставить ASP.Net игнорировать папку ".svn" внутри bin? В принципе не смотрите эту папку на предмет изменений?

Если это не сработает, я буду использовать промежуточную папку вне веб-папок для загрузки сборок на серверы, а затем использовать сценарии для исправления / обновления реальных веб-папок.

[Редактировать:] Параметр экспорта SVN не будет держать мое развертывание под контролем версий, я хочу иметь возможность «обновлять SVN» в веб-папках для развертывания и отката релизов.

Ответы [ 7 ]

5 голосов
/ 31 января 2009

Если вы используете svn export вместо svn checkout для получения файлов из вашего хранилища, вы не получите папку .svn на вашем сервере.

[Редактировать] Еще одним вариантом будет удалить «bin» из вашего хранилища (и, возможно, зафиксировать его в другом, если вам нужны изменения), а затем просто скопировать каталог bin в ваш webroot вручную, когда он изменится. Не забудьте добавить «bin» в свой svn-ignore-list.

1 голос
/ 05 декабря 2011

Задумывались ли вы об использовании сервера непрерывной интеграции?

Непрерывная интеграция в основном относится к практике разработки, предназначенной для увеличения частоты коммитов в хранилище.

Чем чаще вы делаете коммит, тем выше степень детализации по сравнению с откатами, а также тем меньше разрывов между коммитами.

Все перечисленные ниже инструменты работают с Subversion и могут быть объединены с MSBuild на сервере для создания автоматизированной системы сборки и развертывания.

В директивах MSBuild есть опция игнорирования определенных файлов (т. Е. Кода позади) при копировании в оперативный каталог. Кроме того, некоторые файлы могут иметь версию для разработчиков и живую версию ... в этом случае мы должны написать сценарий "transform" для MSBuild, который просто гарантирует, что файл является правильным для живого сервера при копировании в реальном времени. (т.е. web.config)

Гудзон - http://java.net/projects/hudson/

Драко - http://draconet.sourceforge.net/

CruiseControl - http://cruisecontrol.sourceforge.net/

1 голос
/ 31 января 2009

Возможно, вы захотите добавить каталог "Bin" в свой список svn: ignore; в любом случае его не следует фиксировать, поскольку он содержит скомпилированный код, а не исходный код.

В любом случае, в качестве окончательного варианта развертывания, svn export, вероятно, является лучшим выбором, как отмечали другие.

0 голосов
/ 14 апреля 2012

Я немного опоздал на игру, но я брошу свои 2 цента:

Вы можете использовать svn export, передавая -r REV параметр. Это позволяет вам откатить ваше приложение до указанной ревизии.

Так что вы можете использовать:

svn export REPOSITORY DESTINATION --force для обновления до HEAD (текущее состояние вашего приложения)

или

svn export REPOSITORY -r REV DESTINATION --force для обновления до другой ревизии (возможно, вам следует использовать теги)

Не забывайте параметр --force, чтобы он мог заменить существующие файлы в DESTINATION.

0 голосов
/ 07 марта 2012

Subversion 1.7 и выше больше не создает файлы .svn в каждом подкаталоге, что позволяет делать то, что вы хотите, без помех для файлов .svn.

0 голосов
/ 31 января 2009

Утилизация пула приложений не должна быть такой уж большой проблемой. Возможно, ваша проблема в том, что ваши пользователи теряют сеанс, когда это происходит? Если это так, переключитесь на сеансы StateServer или SQLServer вместо использования InProc.

0 голосов
/ 31 января 2009

К сожалению, если вы сделаете это, то, как вы испытываете, вы перезапустите AppDomain. Поэтому, если вы не сделаете, как сказал Espo, и не используете svn export, вы увидите эту проблему.

Было бы проще написать 2-строчный пакетный файл, в котором svn обновляет локальную копию и затем копирует файлы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...