Рабочий процесс сборки/развертывания приложений
Что вы используете для управления рабочим процессом развертывания приложения после завершения сборки? Я говорю не только о том, как получить файлы на сервере, я говорю о том, что происходит после этого. Проверка, тестирование, утверждение, переход на производство, удаление старых сборок и т. д.
пример:
- создания
- сборка развертывается в тестовой среде
- тестирование завершено (руководство шаг)
- если тестирование проходит развертывание в UAT, отклоните сборку
- UAT завершен (шаг)
- если UAT проходит развертывание в Prod else, отклоните сборку
- Retire построить ранее в Prod
любые хорошие приложения, которые могут управлять длительными рабочими процессами сборки?
обновление
Я должен также упомянуть, что я ищу инструмент, который фактически реализует workflow, а не просто отслеживать, в каком состоянии он находится. (Скопируйте сборку, измените статус сборки, отправьте электронные письма, запустите / остановите службы и т. д.)
8 ответов
эта система сборки и выпуска представляет собой смесь разных вещей, поэтому после вашего списка я отвечу:
- сборка завершена (CruiseControl с Maven Build)
- сборка развертывается в тестовой среде (задача Ant, вызываемая из CruiseControl)
- тестирование завершено (ручной шаг) (Maven говорит вам об этом)
- Если тестирование проходит развертывание в UAT else, отклоните сборку (если тесты терпят неудачу, Maven не закончится, нет вызова ant deployer)
отсюда мы делаем это в значительной степени со смесью сценариев ant и bash
- UAT завершен (ручной шаг)
- Если UAT проходит развертывание в Prod else, отклоните сборку
- Retire построить ранее в Prod
сложнее было перезапустить наши серверы приложений, так как у нас не было хорошего опыта с горячими развертываниями, но это выполнимо только с maven, ant и bash.
многие компании используют приложение планирования проекта, как MS Project.
вот приложение планирования проекта с открытым исходным кодом,Открываем Верстак, что вы можете найти полезным. У него есть ограничения, но я использовал его для управления моим расписанием.
Thoughtworksбыл Идти выглядит со стороны. Мы используем Maven на данный момент, но все же на fracion своих возможностей.
Я действительно не понимаю, почему это не может быть сделано с помощью Ant (http://ant.apache.org) с некоторыми задачами, по одному на шаг. Поскольку время этих вещей является ручным, и каждая среда может иметь только одну копию программного обеспечения за один раз, похоже, не так много делать, но кодировать рабочий процесс и позволять людям делать это.
Если вам удастся автоматизировать тесты (и в зависимости от того, какое программное обеспечение вы делаете, нет причин, почему нет), вы должны иметь возможность использовать любое программное обеспечение непрерывной интеграции.
дело в том, что каждый этап может быть записан как задачи, которые могут быть выполнены один за другим в зависимости от того, что было результатом предыдущего случая.
например, у меня была настройка CruiseControl, которая делает именно то, что вы описываете здесь, фаза тестирования выполняла кучу unittests (c++/qt) и UAT материал был написан с драйвером тестируемости.
насколько я знаю, нет единой системы, которая автоматически выполнит все задачи, которые вы упомянули. Необходимо написать несколько сценариев и тестов для автоматизации развертывания системы и ее тестирования. Затем вы можете использовать сервер CI, чтобы собрать его. Вот что я предлагаю:
- автоматизируйте процесс развертывания, используя язык сценариев, соответствующий вашей платформе (например, Ant, сценарии оболочки, пакетные файлы). Что включает в себя задачи, которые вы упоминать:
- загрузка двоичного файла на целевом сервере
- создание резервной копии системы
- отправка электронной почты для оповещения пользователей об обновлении
- выполнение обновления путем приведения системы, изменения символической ссылки на новую версию и запуска ее снова.
- напишите некоторые тесты, которые могут проверить, что программное обеспечение работает в определенной среде. Вы должны иметь возможность запускать их против вашего UAT и производственный сервер, чтобы убедиться, что программное обеспечение было развернуто и работает правильно.
после автоматизации этих задач можно использовать сервер непрерывной интеграции для планирования этих задач или выполнения их по требованию. Я лучше всего знаком с бамбук (я работаю на Atlassian), но я уверен CruiseControl и Гудзон есть сходные черты. Вот как вы это сделаете в Bamboo:
- создать новую сборку планирование развертывания UAT, которое выполняет сценарий развертывания с последующими тестами
- решите, как вы хотите запустить сборку, либо:
- добавление его в зависимости от вашей основной сборки, так что он запускается автоматически при успешной сборке
- запустить его по расписанию, так что вы получите ночные развертывания
- сделать это только срабатывает вручную, в этом случае вы просто запустите сборку, когда вы хотите, чтобы это было развертываемый.
- настройте разрешения для сборки, чтобы только авторизованные пользователи могли развертывать версии на вашем сервере.
затем вы сделаете то же самое и настроите сборку для своего производственного развертывания, но, вероятно, только с ручным запуском и с более ограничительными разрешениями.
Я использовал веб-инструмент с открытым исходным кодом под названием Гудзон и были очень довольны этим. Он очень хорош в управлении сборками и имеет отличную интеграцию с SVN и ant. Единственное предостережение заключается в том, что вам нужно разместить его на своем собственном сервере.