Я разрабатывал рабочий процесс для практического использования автоматизированного цикла непрерывного развертывания для проекта PHP. я "Мне нравится некоторая обратная связь о возможных процессах или технических узких местах в этом рабочем процессе, предложениях по улучшению и идеях о том, как лучше автоматизировать и увеличить простоту использования для моей команды.
Основные компоненты:
-
Hudson
CI-сервер -
Git
иGitHub
-
PHPUnit
модульные тесты -
Selenium RC
-
Sauce OnDemand
для автоматического, кросс-браузерного тестирования облаков с помощьюSelenium RC
-
Puppet
для автоматизации развертывания тестовых серверов -
Gerrit
для просмотра кода Git -
Gerrit Trigger
дляHudson
EDIT. Я изменил графику рабочего процесса, чтобы принять во внимание вклады в ircmaxwell: удаление расширения PHPUnit
для Selenium RC
и выполнение этих тестов только как часть этапа контроля качества; добавление стадии КК; перемещение тестирования пользовательского интерфейса после проверки кода, но до слияния; перемещение сливается после этапа контроля качества; перемещение развертывания после слияния.
Этот графический документ описывает процесс. Мои вопросы/мысли/проблемы следуют.
Мои проблемы/мысли/вопросы:
-
Общая сложность с использованием этой системы.
-
Время участия.
-
Сложность с использованием
Gerrit
. -
Сложность с использованием
Puppet
. -
Мы будем развертывать в экземплярах
Amazon EC2
позже. Если мы собираемся настроить пакетыDebian
сPuppet
и развернем теперь наLinode
срезы, существует ли возможность для рабочего развертывания наLinode
разбиться наEC2
? Должны ли мы вместо этого делать наши сборки и развертывания наEC2
из get-go? -
Другой вопрос re:
EC2
иPuppet
. Мы также рассматриваем использование Scalr в качестве решения. Будет ли это иметь смысл избегать накладных расходовPuppet
только для этого и вместо этого инвестировать в Scalr? У меня есть вторичная (га!) Проблема здесь о стоимости; в тегахSelenium
не должно быть , что часто, что экземплярыEC2
build будут работать 24/7, но для чего-то вроде пятиминутной сборки, заплатив за часEC2
использование кажется немного большим. -
Возможные узкие места процесса при слияниях.
-
Можно ли переместить "A"?
Кредиты. Части этого рабочего процесса вдохновлены Digg awesome post при непрерывном развертывании. График рабочего процесса выше вдохновленный проектом ОС Android.