Я управляю несколькими проектами Symfony 2/3 на моем сервере Jenkins, которые я развертываю на реальном сервере. Это моя текущая настройка:
Строка
- с помощью git плагина
- удалить базу данных, если существует
- выполнение
composer install(режим prod, оптимизация автозагрузчика) - Выполнение
bower installдля извлечения моих активов - выполнение сборки
gulp, которая минимизирует и объединяет css/javascript (мы не используем assetic) - выполнение моих созданий базы данных
- Выполнение модульных тестов
Архивирование
После сборки я архивируйте артефакты сборки без папок vendor, node_modules и bower_components в виде zip файла с помощью Сжатие артефактов".
Развертывание
Я использую плагин Продвигаемые сборки "и плагин Опубликовать через SSH": Если я хочу "пожить вживую" со сборкой, я публикую артефакты (мой zip файл) через SSH для моей живой системы в каталоге под названием staging_dir. После загрузки файла я выполняю некоторые команды SSH:
- Установите текущую систему в режим обслуживания
- разархивируйте zip архива в моем
staging_dir - выполнить
composer installв живой системе (такой же, как и во время сборки) - (
bower installи сборкаgulpне требуется, поскольку мы используем активы, созданные нами во время сборки) - выполнить миграцию базы данных
- переместите текущие системные файлы в папку
backup - копировать файлы из
staging_dir - Установите живую систему в режим "производства" (отключите режим обслуживания)
Рекомендации?
Теперь я хотел бы собрать несколько лучших практик для развертывания:
- Вы предпочитаете переносить папку
vendorв живую систему вместо повторного выполненияcomposer install? - А как насчет активов? Вы снова используете
bower installиgulpна живой системе или используете опубликованные активы? - Как вы обрабатываете свои пароли при выполнении рекламной кампании в прямом эфире?
- ... другие вещи, которые я забыл.