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

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

Пример:

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

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

Обновление

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

18
задан Ryan Rinaldi 22 June 2010 в 20:17
поделиться

8 ответов

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

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

Отсюда и далее, мы делаем это в основном с помощью смеси ant и bash скриптов

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

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

3
ответ дан 30 November 2019 в 09:21
поделиться

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

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

2
ответ дан 30 November 2019 в 09:21
поделиться

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

2
ответ дан 30 November 2019 в 09:21
поделиться

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

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

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

2
ответ дан 30 November 2019 в 09:21
поделиться

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

2
ответ дан 30 November 2019 в 09:21
поделиться

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

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

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

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

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

2
ответ дан 30 November 2019 в 09:21
поделиться

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

0
ответ дан 30 November 2019 в 09:21
поделиться

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

1
ответ дан 30 November 2019 в 09:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: