4  /  37

Обновления модулей

Просмотров: 7058 (Статистика ведётся с 06.02.2017)

Обновления модуля ставятся друг за другом в строгом соответствии с версией. Каждое обновление содержит лишь изменение по сравнению с предыдущим. Настоятельно рекомендуется при каждом выпуске обновления эмулировать самые различные ситуации для тестирования. Например, перед выпуском установить обновления и на чистые дистрибутивы разных версий, и на рабочие сайты.

Структура обновления модуля

Файлы папки с обновлением:

  • /install/version.php - файл содержит номер версии обновления и дату его выпуска. Обязательный файл.
  • description.* - содержит описание обновления, где * - идентификатор языка в системе. Например, описание обновления модуля на русском языке будет содержаться в файле description.ru, на английском - description.en. Обязательный файл.
    В описании допустимо использование html тегов: <b>,<i>,<u>,<li>,<ul>,<span>,<p>, <br>
  • updater.php – файл запускается при установке обновления. С помощью этого файла выполняются действия для обновления на новую версию. Файл может содержать произвольный PHP код, который выполняется в контексте сайта. Необязательный файл.
    В каждом обновлении может быть только один апдейтер. Но может и не быть ни одного, если требуется обновить только ядро.
  • version_control.txt - служит для организации связи между версиями модулей. Файл содержит ссылки на версии модулей, от которых зависит данное обновление. Например, файл может содержать iblock,13.8.0. Это означает, что данное обновление будет установлено, если в системе установлен модуль Информационные блоки версии не ниже 13.8.0. Либо модуль Информационные блоки не установлен вообще. Необязательный файл.

Перед загрузкой модуля на сайт необходимо запаковать сборку обновления модуля в архив. Для этого выполните следующее:

  • Создайте каталог с названием версии обновления. Например, 0.0.2, 0.0.5 и т.д.
  • Скопируйте в созданную папку файлы и каталоги обновления модуля.
  • Заархивируйте папку в формат .zip или .tar.gz.

В результате должно получиться, например, 0.0.2.zip, 0.0.5.zip. Например, папка с обновлением может иметь следующую структуру:

Обновление

Примечание: Ядро Ядро продукта - файлы, находящиеся в директории /bitrix/modules/, а также файлы системных компонентов: /bitrix/components/bitrix/.
Подробнее...
обновляется системой обновлений автоматически при установке обновлений. Другие же части сайта, включая базу данных, автоматически не обновляются.

Все файлы обновления просто копируются как есть в папку модуля. И если ваш модуль полностью расположен в этом каталоге, то обновление завершено. Если же по логике работы модуля требуется чтобы часть файлов была вне ядра, к какой-либо другой папке, то с помощью updater.php нужно перенести их в нужное место.

Механизм апдейтеров (updater.php) служит именно для того, чтобы применить необходимые изменения к тем частям сайта, которые не являются ядром. С помощью этого механизма можно привести структуру базы данных, системные и публичные файлы в соответствие с текущей версией ядра.

Если возникла необходимость скопировать файлы в обновлении самостоятельно, то нужно использовать:

$updater->CopyFiles("install/classes", "modules/quintura.search/classes");

В этом случае файлы из папки /install/classes, находящиеся в папке обновления, скопируются в папку /bitrix/modules/quintura.search/classes.

Если при выпуске последующих обновлений возникла потребность установить зависимость его от новых модулей, то необходимо помнить, что обновление с зависимостью не будет требовать установки указанных модулей. В этом случае возможны два варианта:

  1. Обновление всё равно устанавливать, проверять присутствие нужного модуля уже в функционале модуля.
  2. Добавить в код обновления проверку на нужный модуль, и при его отсутствии выводить ошибку пользователю. Обновление не будет установлено, если присвоить переменной $errorMessage строку сообщения.

Примечание: При создании архива с решением/обновлением через консольную утилиту tar в MacOS, нужно предварительно выставлять переменную окружения: export COPYFILE_DISABLE=true


17
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии