Рабочий процесс создания / развертывания приложения - PullRequest
18 голосов
/ 22 июня 2010

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

Пример:

  1. Сборка завершена
  2. Сборка развернута в тестовой среде
  3. Тестирование завершено ( шаг вручную )
  4. Если тестирование проходит развертывание в UAT, иначе отклоните сборку
  5. UAT завершен ( ручной шаг )
  6. Если UAT проходит развертывание в Prod, иначе отклоните сборку
  7. Отменить сборку ранее в Prod

Какие-нибудь хорошие приложения, которые могут управлять длительными рабочими процессами сборки?

Обновление

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

Ответы [ 8 ]

3 голосов
/ 19 августа 2010

Эта система сборки и выпуска представляет собой смесь различных вещей, поэтому после вашего списка я отвечу:

  1. Сборка завершена (CruiseControl with Maven Build)
  2. Сборка развернутав тестовую среду (задача Ant, вызванная из CruiseControl)
  3. Тестирование завершено (шаг вручную) (Maven сообщает вам об этом)
  4. Если тестирование проходит развертывание в UAT, иначе отклоните сборку (Если тестыне удастся, Maven не закончится, вызов муравья не будет)

С этого момента мы делаем это в значительной степени с помощью смеси скриптов ant и bash

UAT завершен (шаг вручную) Если UAT проходит развертывание в Prod, иначе отклоните сборку Отмените сборку ранее в Prod

Сложнее, чем мымы обнаружили, что перезапускаем наши серверы приложений, так как у нас не было хорошего опыта с горячими развертываниями, но это выполнимо только с maven, ant и bash.

2 голосов
/ 25 августа 2010

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

  1. Автоматизируйте процесс развертывания, используя язык сценариев, соответствующий вашей платформе (например, Ant, сценарии оболочки, командные файлы).Это включает в себя задачи, о которых вы упомянули:
    • загрузка двоичного файла на целевой сервер
    • с резервным копированием системы
    • отправка электронного письма для оповещения пользователей об обновлении
    • Выполнение обновления путем сбоя системы, изменения символической ссылки, указывающей на новую версию, и повторного запуска.
  2. Напишите несколько тестов, которые могут проверить, что программное обеспечениеработая в определенной среде.Вы должны иметь возможность запускать их на своем UAT и производственном сервере, чтобы убедиться, что программное обеспечение было развернуто и работает правильно.

После того, как вы автоматизируете эти вещи, вы можете использовать сервер непрерывной интеграции.планировать эти задачи или делать их по требованию.Я больше всего знаком с Bamboo (я работаю в Atlassian), но я уверен, что CruiseControl и Hudson имеют аналогичные функции.Вот как вы это сделаете в Bamboo:

  1. Создайте новый план сборки для вашего развертывания UAT, в котором будет выполнен сценарий развертывания, после которого будут выполнены тесты
  2. Решите, как вы хотите запуститьсборка, либо:
    • добавив ее в качестве зависимости от основной сборки, чтобы она автоматически запускалась при успешной сборке
    • , чтобы она работала по расписанию, так что вы получаете ночные развертывания
    • позволяет запускать его только вручную, в этом случае вы просто запускаете сборку, когда хотите развернуть ее.
  3. Настройте разрешения для сборки, чтобы только авторизованные пользователи моглиразверните версии на своем сервере.

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

2 голосов
/ 21 августа 2010

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

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

Например, у меня былнастройка CruiseControl, которая делает именно то, что вы здесь описываете, фаза тестирования выполняла кучу юнит-тестов (c ++ / qt), и все было написано с помощью драйвера тестируемости.

2 голосов
/ 19 августа 2010

Я действительно не понимаю, почему это не может быть сделано с помощью Ant (http://ant.apache.org) с некоторыми задачами, по одному на шаг. Поскольку хронометраж этих вещей выполняется вручную, и в каждой среде может быть только одна копия Программное обеспечение в одно время, кажется, мало что может сделать, кроме как кодировать рабочий процесс и позволить ему это сделать.

2 голосов
/ 17 августа 2010

ThoughtWorks Go выглядит со стороны. Мы используем Maven на данный момент, но все еще в значительной степени его возможности.

2 голосов
/ 23 июня 2010

Многие компании используют приложение для планирования проектов, например MS Project.

Вот приложение планирования проекта с открытым исходным кодом, Open Workbench , которое может оказаться полезным. У него есть ограничения, но я использовал его для управления своими расписаниями.

1 голос
/ 24 августа 2010

Я использовал веб-инструмент с открытым исходным кодом под названием Hudson и был очень доволен им.Он очень хорош в управлении сборками и имеет отличную интеграцию с SVN и ant.Единственное предостережение - вам нужно разместить его на своем собственном сервере.

0 голосов
/ 25 августа 2010

Мы используем этого старого валлийского парня по имени Алистер. Работает как шарм.

...