Есть ли идеальный способ перехода от Staging к Production для кода Coldfusion? - PullRequest
1 голос
/ 19 декабря 2010

Я пытаюсь найти хороший способ запустить промежуточный сервер и рабочий сервер для размещения нескольких сайтов Coldfusion.Каждый сайт, по сути, является форком репо, с изменениями, специфичными для каждого сайта.Я ищу хороший способ переместить этот код промежуточного сервера (после утверждения QA) на рабочий сервер.

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

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

В идеале я хотел бы, чтобы группа разработчиков имела доступ по FTP с возможностью входа в некоторыепанель управления, чтобы пометить сайт для QA, а затем попросить сотрудника QA проверить сайт и пометить его как стабильный / производственный, а затем попросить кого-нибудь увидеть, что сайт находится в режиме ожидания, и нажать кнопку, чтобы развернуть обновленный сайт.(Любая из этих ролей может быть исполнена одним и тем же человеком)

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

Ответы [ 2 ]

2 голосов
/ 19 декабря 2010

Согласитесь с @Nathan Strutz, что Ant - хороший инструмент для этой цели.Еще несколько мыслей.

Вам нужен повторяемый процесс сборки, сводящий к минимуму возможности для дельт.Имея это в виду:

  1. SVN экспортирует сборку.
  2. Пометьте сборку в SVN.
  3. Превратите этот экспорт в .zip, что-то с установщиком и т. Д. Идея - это единое целое для проверки с набором повторяющихся шагов развертывания.1010 *
  4. Отправить сборку в QA.
  5. Если QA одобряет развертывание, встроенное в производственную среду

Перемещать целые базы кода как сборку, а не просто измененные файлы.Таким образом, вы знаете, что положено в производство - это то же самое, что было подтверждено.Рефакторинг кода, чтобы данные конфигурации не перезаписывались новой сборкой.

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

Кроме того, в вашей ситуации я бы подумал о подходе, который допускает стандартизированную кодовую базу, с механизмом (т.е. API), который учитывает настройку, которую вы описываете.Иначе управлять каждым сайтом как «нестандартным» проектом очень больно.

Обновление

Обучение муравьев : Муравей в действии [книга].

В Source Control : для описываемой вами ситуации я бы сохранял базовую кодовую базу и оверлеи для каждого сайта.Экспортируйте ядро, а затем конкретный сайт.Это гарантирует, что любые обновления ядра, которые не изменяют специфичные для сайта изменения, вносят его.

Назовите эту комбинацию "сборкой".Делай билды с Ant.Поддерживайте сценарий Ant - или, возможно, более гибко - файл конфигурации ant - для каждой комбинации ядра и сайта.Отслеживайте номер версии ядра и сайта как часть данной сборки.

Если ваше программное обеспечение находится внутри установщика (например, Nullsoft Install Shield ), который должен быть частью сборки.В противном случае вы должны сгенерировать файл .zip (также возможен .ear, но никто не видел, чтобы кто-нибудь на самом деле делал это с CF).Точка является одним файлом, который охватывает всю сборку.

Этот файл сборки должен проверяться QA.Таким образом, проверка включает в себя развертывание, настройку и тестирование функциональности.Смотрите мой ответ для развертывания о том, как это может протекать.

Развертывание :

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

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

2 голосов
/ 19 декабря 2010

Вы должны рассматривать Ant как инструмент миграции.Он позволяет вам упаковать процесс сборки в простой XML-файл, который вы можете запустить из командной строки или из Eclipse.Создание автоматизированного процесса сборки прекрасно, потому что он документирует процесс, а также выполняет его одинаково, каждый раз.

Ant может обрабатывать архивирование и разархивирование, копирование, создание резервных копий, если необходимо, работу с вашим хранилищем subversionПередача по FTP, сжатие JavaScript и даже вызов веб-адреса, если вам нужно сделать что-то вроде очистки памяти приложения или кэша сервера после его установки.Вы можете быть удивлены тем, что вы можете сделать с Ant.

Для начала я бы порекомендовал руководство по Ant в качестве основного ресурса, но посмотрите на существующие сборки Ant как на хороший старт.указать, чтобы вы пошли.У меня есть один на RIAForge , например, который делает некоторые интересные вещи и вызывает отличный сценарий для дополнительной обработки моих файлов во время сборки.Если вы выполните поиск в riaforge для файлов build.xml , вы обнаружите большое их количество, многие из которых предназначены непосредственно для проектов ColdFusion.

...