Приветствую специалистов по деплою!
Допустим я на дев версии сайта установил модули, накликал функционал и хочу чтобы это пошло в продакшн.
Что делаю:
- на дев версии $ drush cex - экспортирую конфигурации
- переношу на продакшн файлы composer.json, composer.lock + папку с конфигурациями.
- на продакшне
$ composer install
- нужно же модули установить. - опять же на продакшне
$ drush cim
- импорт конфигураций
При папытке импорта пишет:
/*-----------------------------------------------*/
[error] Drupal\Core\Config\ConfigImporterException: There were errors validating the config synchronization.
Невозможно установить модуль views_role_based_global_text, поскольку его не существует.
Невозможно установить модуль weight, поскольку его не существует. in Drupal\Core\Config\ConfigImporter->validate() (line 750 of /home/mysite/domains/test.mysite.com/web/core/lib/Drupal/Core/Config/ConfigImporter.php).
In ConfigImportCommands.php line 360:
The import failed due to the following reasons:
Невозможно установить модуль views_role_based_global_text, поскольку его не существует.
Невозможно установить модуль weight, поскольку его не существует.
/*-----------------------------------------------*/
Если модули включить - тогда импорт конфигураций проходит нормально.
Это так и нужно? Это всегда так было?
А если я не помню какие модули ставил на дев версии.
Комментарии
Это грабли, на которые все наступают. После установки модулей через composer install, нужно ОБЯЗАТЕЛЬНО сделать drush cr для сброса кэша, иначе друпал эти файлы не видит и соответственно не может установить модуль при импорте конфигов
В целом деплой должен выглядеть так:
git pull origin master
composer install --no-dev
drush cr
drush updb -y
drush cim -y
drush cr
Спасибо!
А какой смысл применения ключа --no-dev ?
Чтобы не устанавливать пакеты из секции "require-dev". Например у меня там модуль stage_file_proxy, который используется только на локалке
"drupal/stage_file_proxy": "^1.1"
},
Соответственно, если запускать composer install с ключом --no-dev то модули из этой секции вообще не будут даже скачаны
Понял, require-dev - это то, что нужно только в dev окружении.