Рабочий процесс сборки/развертывания приложений

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

пример:

  1. создания
  2. сборка развертывается в тестовой среде
  3. тестирование завершено (руководство шаг)
  4. если тестирование проходит развертывание в UAT, отклоните сборку
  5. UAT завершен (шаг)
  6. если UAT проходит развертывание в Prod else, отклоните сборку
  7. Retire построить ранее в Prod

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

обновление

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

8 ответов


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

  1. сборка завершена (CruiseControl с Maven Build)
  2. сборка развертывается в тестовой среде (задача Ant, вызываемая из CruiseControl)
  3. тестирование завершено (ручной шаг) (Maven говорит вам об этом)
  4. Если тестирование проходит развертывание в UAT else, отклоните сборку (если тесты терпят неудачу, Maven не закончится, нет вызова ant deployer)

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

  1. UAT завершен (ручной шаг)
  2. Если UAT проходит развертывание в Prod else, отклоните сборку
  3. Retire построить ранее в Prod

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


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

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


Thoughtworksбыл Идти выглядит со стороны. Мы используем Maven на данный момент, но все же на fracion своих возможностей.


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


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

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

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


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

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

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

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

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


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


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