Пренос конфигураций с тестовой версии сайта на рабочую. Нужно ли что-то делать перед drush cim?

Главные вкладки

Аватар пользователя VasyOK VasyOK 31 мая 2022 в 16:37

Приветствую специалистов по деплою!

Допустим я на дев версии сайта установил модули, накликал функционал и хочу чтобы это пошло в продакшн.
Что делаю:

  • на дев версии $ 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, поскольку его не существует.
/*-----------------------------------------------*/

Если модули включить - тогда импорт конфигураций проходит нормально.

Это так и нужно? Это всегда так было?

А если я не помню какие модули ставил на дев версии.

Лучший ответ

Аватар пользователя ivnish ivnish 31 мая 2022 в 16:56
1

В целом деплой должен выглядеть так:

git pull origin master
composer install --no-dev
drush cr
drush updb -y
drush cim -y
drush cr

Комментарии

Аватар пользователя ivnish ivnish 31 мая 2022 в 16:54

VasyOK wrote: Невозможно установить модуль views_role_based_global_text, поскольку его не существует.

Это грабли, на которые все наступают. После установки модулей через composer install, нужно ОБЯЗАТЕЛЬНО сделать drush cr для сброса кэша, иначе друпал эти файлы не видит и соответственно не может установить модуль при импорте конфигов

Аватар пользователя ivnish ivnish 31 мая 2022 в 17:23

Чтобы не устанавливать пакеты из секции "require-dev". Например у меня там модуль stage_file_proxy, который используется только на локалке

    "require-dev": {
        "drupal/stage_file_proxy": "^1.1"
    },

Соответственно, если запускать composer install с ключом --no-dev то модули из этой секции вообще не будут даже скачаны