Рабочий процесс создания/развертывания приложений
Что вы используете для управления рабочим процессом развертывания вашего приложения после завершения сборки? Я говорю не только о том, как получить файлы на сервере, я говорю о том, что происходит после этого. Проверка, тестирование, утверждение, переход на производство, отставку старых сборников и т.д.
Пример:
- Построение завершено
- Сборка развертывается в тестовой среде
- Тестирование завершено (ручной шаг)
- Если тестирование проходит развертывание в UAT else, откажитесь от сборки
- UAT завершен (ручной шаг)
- Если UAT передает развертывание на Prod else reject build
- Ускорить сборку ранее в Prod
Какие-нибудь хорошие приложения там, которые могут управлять длительными рабочими процессами сборки?
Обновление
Я также должен упомянуть, что я ищу инструментарий, который на самом деле реализует рабочий процесс, а не только для отслеживания того, в каком состоянии он находится. (Скопируйте сборку, измените статус сборки, отправьте электронные сообщения, начните/остановите службы и т.д.)
Ответы
Ответ 1
Эти системы сборки и выпуска представляют собой смесь разных вещей, поэтому, следуя вашему списку, я отвечу:
- Сборка завершена (CruiseControl с Maven Build)
- Сборка развертывается в тестовой среде (задача Ant, вызываемая из CruiseControl)
- Тестирование завершено (ручной шаг) (Maven сообщает об этом)
- Если тестирование проходит развертывание в UAT else, отклоните сборку (если тесты не пройдены, Maven не закончится, не вызовет развертыватель ant)
С этого момента мы делаем это в значительной степени со смесью сценариев ant и bash
- UAT завершен (ручной шаг)
- Если UAT передает развертывание на Prod else reject build
- Ускорить сборку ранее в Prod
Более сложная вещь, которую мы обнаружили, - это перезагрузить наши серверы приложений, поскольку у нас не было хорошего опыта с горячими развертываниями, но это возможно только с maven, ant и bash.
Ответ 2
Многие компании используют приложение планирования проектов, такое как MS Project.
Здесь приложение планирования проектов с открытым исходным кодом, Open Workbench, которое может показаться вам полезным. У него есть ограничения, но я использовал его для управления моими расписаниями.
Ответ 3
ThoughtWorks Go выглядит как часть. Мы используем Maven на данный момент, но все еще на грани его возможностей.
Ответ 4
Я не понимаю, почему это невозможно сделать, используя Ant (http://ant.apache.org) с некоторыми задачами, один за шаг. Поскольку время этих действий является ручным, и в каждой среде может быть только одна копия программного обеспечения за один раз, похоже, что это не так много, но нужно скопировать рабочий процесс и позволить людям на нем.
Ответ 5
Если вам удастся автоматизировать ваши тесты (и в зависимости от того, какое программное обеспечение вы делаете, нет причин, почему бы и нет), вы должны иметь возможность использовать любое программное обеспечение для непрерывной интеграции.
Дело в том, что каждая фаза может быть записана как задачи, которые могут выполняться один за другим в зависимости от того, что было результатом предыдущего случая.
Например, у меня была настройка CruiseControl, которая делает именно то, что вы здесь описываете, на этапе тестирования выполнялось множество unittests (С++/qt), а материал uat был написан с драйвером testability.
Ответ 6
Насколько я знаю, нет единой системы, которая автоматически выполнит все указанные вами задачи. Вам нужно написать несколько сценариев и тестов для автоматизации развертывания вашей системы и ее тестирования. Затем вы можете использовать CI-сервер, чтобы собрать его вместе. Вот что я предлагаю:
- Автоматизация процесса развертывания с использованием языка сценариев, подходящего для вашей платформы (например, Ant, сценариев оболочки, командных файлов). Это включает в себя задачи, которые вы упомянули:
- Загрузка двоичного файла на целевой сервер
- с резервным копированием системы
- отправка электронной почты для уведомления пользователей об обновлении
- выполнить обновление, сведя систему, изменив символическую ссылку, чтобы указать на новую версию, и запустив ее снова.
- Напишите несколько тестов, которые могут проверить, работает ли программное обеспечение в конкретной среде. Вы должны иметь возможность запускать их против вашего UAT и производственного сервера, чтобы убедиться, что программное обеспечение было развернуто и работает правильно.
Как только вы автоматизированы, вы можете использовать сервер непрерывной интеграции для планирования этих задач или выполнения их по требованию. Я больше всего знаком с Bamboo (я работаю в Atlassian), но я уверен, CruiseControl и Hudson имеют схожие функции. Вот как вы это сделаете в Bamboo:
- Создайте новый план сборки для развертывания UAT, который выполняет развертывание script, а затем тесты
- Решите, как вы хотите запустить сборку:
- добавив его как зависимость от вашей основной сборки, так что она запускается автоматически при успешной компоновке
- запустите его по расписанию, так что вы получаете ночные развертывания
- заставить его запускаться только вручную, и в этом случае вы просто запускаете сборку, когда хотите ее развернуть.
- Настройте разрешения для сборки, чтобы только авторизованные пользователи могли развертывать версии на вашем сервере.
Затем вы сделаете то же самое и настройте сборку для своего производственного развертывания, но, возможно, только с ручным запуском и с более ограничительными разрешениями.
Ответ 7
Я использовал веб-инструмент с открытым исходным кодом под названием Hudson и был очень доволен этим. Он очень хорош в управлении сборками и имеет отличную интеграцию с SVN и ant. Единственное предостережение в том, что вам нужно разместить его на своем собственном сервере.
Ответ 8
Мы используем этого старого валлийского парня по имени Алистер. Работает как шарм.