Я работаю над довольно небольшим веб-приложением, и мы просто работаем над улучшением нашего развертывания (улучшая его с «потратить день на настройку всех модулей, которые нам нужны в Windows, а затем бросать в них файлы, пока все не будет работать», так что это какое-то улучшение).
У нас есть три вещи, которые нам нужно сделать, чтобы настроить наш сайт:
- Модуль Perl, созданный с использованием
Module::Starter
, содержащий модуль Config
, который содержит параметры конфигурации для всего сайта. При установке этот модуль (используя MakeMaker
PREREQ_PM
, чтобы проверить, что все необходимые нам модули уже установлены). Любые модули, которые не нужно устанавливать перед установкой этого модуля.
- Несколько файлов SQL, которые необходимо выполнить для настройки базы данных.
- Файлы Perl CGI, которые составляют веб-сайт. Пока Apache указывает на них, сайт «просто работает». Это включает в себя модули общего кода, используемые всеми файлами Perl.
Развертывание состоит в том, что я извлекаю из всех веток Git и упаковываю версию. Затем мы можем передать это для тестирования либо локально, либо на экземпляре Amazon EC2. Как только у нас получится выпустить релиз, мы либо установим его поверх последней версии, либо перенесем базу данных в экземпляр тестирования и сделаем , что , новым экземпляром.
Сравнивая это с вашими критериями:
- Управление библиотеками: несколько. Мы используем модули CPAN довольно широко. Чтобы попробовать новую версию, мы обновляем нашу собственную версию модуля перед выполнением этого обновления на рабочем сервере. Мы вручную поддерживаем список, но поскольку наша кодовая база довольно мала, нетрудно выяснить, какие модули используются (например, с помощью
grep
ing для строк, начинающихся с use
).
- Интеграция Makefile / Build: Да. Все, что связано с Makefile, выполняется нашей установкой EU :: MM. У нас нет глобальных тестов, но, поскольку весь наш набор тестов недавно оказался в одной папке, мы надеемся, что скоро у нас будет что-то, что вы можете запустить
prove
напрямую.
- Дружественный контроль версий: Да. Весь наш исходный код содержится в одной папке, без особого дублирования.
- Кроссплатформенность: да. У нас есть много странных вещей, происходящих в MakeMaker, чтобы позволить нам сделать это, но как запуск, кросс-платформенный код дает нам ценную гибкость. Мы стараемся максимально использовать основные модули и инструменты Perl, а также модули Pure Perl из CPAN.
- Одиночная установка Perl: Да. Мы можем работать с Perl где угодно и устанавливать при любых настройках, при условии, что все собственные инструменты модуля Perl могут работать - было приложено много усилий для того, чтобы
CPAN
, EU::MM
и другие работали хорошо во всех системах, и кажется, позор тратить его впустую.
- Легкий запуск: не совсем. Эта система развивалась (т.е. не была разумно спроектирована) из одной папки со всеми исходными файлами и текстовым файлом со списком модулей, которые необходимо установить. Несмотря на то, что формализация тестирования для установленных модулей является огромным улучшением, нам все же требуется около дня на его настройку, в основном, на установку наших обязательных модулей (не все из них легко установить в Windows). Я надеюсь использовать сообщество Perl Win32 , чтобы попытаться устранить проблемы с проблемными модулями CPAN.
Имейте в виду, это действительно простой веб-сайт, без XS, сложной веб-инфраструктуры или чего-либо подобного. Мы также поддерживали эту настройку только в двух версиях, поэтому у нас недостаточно опыта в отношении того, как это будет работать, так как код усложняется, а платформы для развертывания становятся все более разнообразными. Буду очень признателен за любые предложения или комментарии по нашей системе.