Рекомендации по развертыванию кода / веб-приложений? - PullRequest
7 голосов
/ 15 февраля 2011

Мне бы хотелось услышать идеи о том, как лучше всего перенести код с сервера разработки на рабочий сервер.

Список получателей, не делайте этот список, было бы полезно.

Любые инструменты, помогающие автоматизировать шаги.

  1. Сделать резервные копии существующего кода, учитывая этот список файлов

  2. Запись о развертывании этих файлов от разработчика до производства

  3. Позволяет упростить откат, если развертывание или приложение каким-либо образом не удалось ...

Я никогда не работал в компании, у которой был процесс развертывания, кроме очень ручного, ftp-файлов от разработчика до производства.

Что вы делали в своих компаниях, отделах и т. Д.?

Спасибо ...

Да, я программист на Coldfusion, но файлы - это файлы, и это не должно зависеть от языка.

Ответы [ 4 ]

7 голосов
/ 15 февраля 2011

ОК, я укушу. Есть технологический аспект этой проблемы, о котором уже говорили другие ответы. Но реальная проблема - это проблема process . Там, где реальное внимание должно быть уделено содержательному жизненному циклу разработки программного обеспечения (SDLC) - планированию, разработке, валидации и развертыванию. Я расскажу каждый по очереди. То, что вы хотите, это повторяемое действие на каждом этапе.

Планирование

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

Разработка

Помните эту электронную систему? Хорошо. Теперь, когда вы вносите изменения в код (вы берете на себя обязательство по управлению исходным кодом?), Вы связываете эти изменения с чем-то в этой электронной системе - как правило, с билетами. Мне нравится Trac , но я также слышал хорошие вещи о номере Атлассиана . Это дает вам прослеживаемость . Таким образом, вы можете утверждать, что было сделано и как. Затем вы можете использовать эту систему и систему контроля версий для создания сборки - всех битов, необходимых для всего, что изменилось - и тега , которые встроены в систему контроля версий - это ваш список того, что изменилось. Более того, сборка содержит всего , так что это отдельная сущность, которую можно легко развернуть самостоятельно. Затем сборка доставляется за ...

Проверка

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

Это не должно быть сделано программистом ! Это как лиса, наблюдающая за курятником. И тот, кто делает это, должен следовать какому-то плану. Мы используем Test Link . Это означает, что каждая сборка проверяется одинаково, поэтому вы можете идентифицировать регрессия ошибок. И эта сборка должна быть развернута так же, как и в production .

Если все идет хорошо (обычно требуется минимум 3 сборки), сборка проверена . И это идет к ...

Развертывание * * тысяча пятьдесят-одна Это должно быть не событие, потому что вы выполняете проверенную сборку, выполняя те же действия, что и при тестировании. Возможно, сначала он попадет на промежуточный сервер, где есть процесс автоматического копирования, но суть в том, что на этом этапе проблема не должна возникать, поскольку вы прошли валидацию с помощью того же процесса. Заключение

С точки зрения знание что и где, то, что вы действительно хотите, - это логический способ группировки изменений вместе. Вот тут и возникает идея build . Это действительно блок, который должен переходить между этапами в SDLC. Если у вас уже есть это, тогда способность понять состояние данной системы становится тривиальной.

1 голос
/ 15 февраля 2011

В двух словах ...

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

Вы можете сделать это с помощью простого пакетного сценария или использовать что-то вроде Ant для большего контроля. Вот простой пример пакетного файла с использованием Subversion:

svn copy svn://path/to/your/project/trunk -r HEAD svn://path/to/your/project/tags/%version%
svn checkout svn://path/to/your/project/trunk -r HEAD //path/to/target/directory

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

<sync todir="//path/to/target/directory" includeEmptyDirs="true" overwrite="true">
  <fileset dir="${basedir}">
    <exclude name="**/*.svn"/>
    <exclude name="**/test/"/>
  </fileset>
</sync>

Это действительно только отправная точка. Следующим шагом может стать решение для непрерывной интеграции, подобное Hudson . Я также рекомендовал бы прочитать « Pragmatic Project Automation: Как создавать, развертывать и контролировать Java-приложения ».

Одна особенность ColdFusion заключается в том, чтобы при необходимости очистить область приложения (обновить любые одноэлементные компоненты). Обычным подходом здесь является использование параметра URL, который вызывает onRequestStart () для вызова onApplicationStart (). Вам также может потребоваться очистить доверенный кеш .

1 голос
/ 15 февраля 2011

Check Ant или Maven - это инструменты сборки и развертывания, используемые в мире Java, которые могут помочь вам копировать / ftp файлы, выполнять резервное копирование и даже извлекать код из SVN.

Вы можете автоматизировать шаги развертывания с помощью этих инструментов, например, Ant позволит вам объявить набор задач как часть вашего развертывания.Таким образом, вы можете, например:

  1. Проверить версию, используя SVNAnt или аналогичный каталогу
  2. Скопировать (и, возможно, сначала сжать) эти файлы вкаталог резервного копирования
  3. FTP все файлы на ваш веб-сервер (ы)
  4. Создание отчета по электронной почте для команды, иллюстрирующее развертывание

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

Надеюсь, это поможет!

0 голосов
/ 15 февраля 2011

Мы используем систему под названием AnthillPro: http://www.anthillpro.com

Это коммерческое программное обеспечение, но оно позволяет нам полностью автоматизировать процесс развертывания на нескольких серверах и операционных системах (в настоящее время мы используем его как для ColdFusion, так и для Java,но он может использоваться для большинства языков. Он имеет массу сторонних интеграций:

http://www.anthillpro.com/html/products/anthillpro/tool-integrations.html

...