Подтвердить что ты не робот

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

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

Пример:

  • Построение завершено
  • Сборка развертывается в тестовой среде
  • Тестирование завершено (ручной шаг)
  • Если тестирование проходит развертывание в UAT else, откажитесь от сборки
  • UAT завершен (ручной шаг)
  • Если UAT передает развертывание на Prod else reject build
  • Ускорить сборку ранее в Prod

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

Обновление

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

4b9b3361

Ответ 1

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

  • Сборка завершена (CruiseControl с Maven Build)
  • Сборка развертывается в тестовой среде (задача Ant, вызываемая из CruiseControl)
  • Тестирование завершено (ручной шаг) (Maven сообщает об этом)
  • Если тестирование проходит развертывание в UAT else, отклоните сборку (если тесты не пройдены, Maven не закончится, не вызовет развертыватель ant)

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

  1. UAT завершен (ручной шаг)
  2. Если UAT передает развертывание на Prod else reject build
  3. Ускорить сборку ранее в 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

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