Отдельное здание от развертывания с Хадсоном
Мы начали использовать Hudson, и текущий рабочий процесс таков:
Проверка локально > код > запуск тестов > обновление > запуск тестов> фиксация
Вместо этого опроса Хадсон просто сидит там, пока мы не создадим экземпляр сборки. Это тогда:
Оформить заказ локально > запустить скрипт Phing
Затем скрипт Phing:
Экспорт Svn последней версии > запуск тестов (в случае успеха) > создание отчетов и т. Д.> сжатие экспорта > scp на рабочий сервер>.. творите чудеса, чтобы создать сайт жить...
Что все работает отлично и отлично, однако на самом деле это не дает нам возможности какого-либо "промежуточного" контроля качества, и каждая сборка создает ревизию главы репо. В идеале мы хотели бы, чтобы Хадсон проводил опрос или использовал крючки для фиксации после каждой фиксации и:
Проверка локально > выполнить задачу Phing для запуска тестов и, в случае успеха, создания отчетов и т. Д.
Затем можно вручную создать экземпляр автоматизированного развертывания (с помощью задачи Phing) либо в "промежуточной среде контроля качества, либо в производственной среде начиная с каждой конкретной сборки. Не каждый коммит будет развернут для контроля качества.
Возможен ли вообще этот рабочий процесс с помощью Hudson, или после этого нам потребуется вручную выполнить наши задачи по развертыванию.
3 answers
Я разделил задание сборки/тестирования (задание 1) и задание развертывания (задание 2). Job1 запускается на магистрали после каждой фиксации (опросы Хадсона, но крючок для фиксации также будет работать). Он также архивирует артефакты сборки. Задание 2 будет запущено вручную. Он получает номер build_number из job1 в качестве параметра сборки (мне нравится параметр run) и загружает артефакты из job1 в свою собственную рабочую область. Это они запускают развертывание. В вашем случае я бы добавил еще один параметр (параметр выбора), чтобы определить, к чему среда, которую вы хотите развернуть.
С помощью плагина настройки описания вы можете распечатать номер запуска из задания 1 и среды, и вы можете легко увидеть в истории заданий, какая сборка была развернута, когда и в какой среде.
В итоге я сделал нечто похожее на предложение Питера Шютце. Однако я использовал только единственную работу. Я использую 3 параметра сборки: развертывание (bool), среда (выбор) и редакция (текст). Затем я изменил свои сценарии Phing, чтобы выполнять развертывания только в том случае, если параметр deploy имеет значение true, и в этом случае он развернет указанную версию в указанной среде. По умолчанию развертывание равно false, редакция является головной, а среда - промежуточной. Теперь, когда Хадсон опрашивает svn, он видит, что параметр развертывания равен ложно и обходит задачи развертывания.