Итак, я наслаждаюсь использованием установщика hackathon Magento Composer, но я изо всех сил пытаюсь понять, как другие используют его в отношении службы развертывания. В настоящее время я использую DeployHQ, и да, я могу настроить его на развертывание и запуск composer при обновлении репозитория, но сейчас это не имеет смысла для меня.
Мое главное репозиторий для композиторов, содержащий только файл json всех пакетов, которые я хочу включить в свою сборку, обновляется только при добавлении нового пакета в список.
Когда я обновляю свою тему или пользовательское расширение (на которое есть ссылка в файле json), нет «ловушки» для обновления моей службы развертывания. Поэтому я должен войти на свой сервер и вручную запустить composer (который отключает сайт до его завершения).
Так как другие справляются с этим? Должен ли я запускать composer только локально и включать папку vendor в мое хранилище?
Любые ответы будут с благодарностью.
источник
Ответы:
Я создал структуру в нашем агентстве, которая позволяет нам использовать Composer для развертывания всех наших сайтов Magento. Это может быть немного излишним для вопроса, который вы задали, но в любом случае вот базовый обзор структуры:
Структура хранилища
Ниже приведена структура папок «родительского» хранилища. Он содержит компоновщик JSON и блокирует файлы и другую конфигурацию, необходимую для развертывания.
code/magento
)index.php
и другие папки, такие как мультимедиа и ошибки, находятся в общей папке за пределами корня Magento.развертывание
composer install
во время сборки и развертывает все модули в подмодуле Magento.Это все еще не постоянная интеграция, но я считаю, что она хорошо работает для сайтов Magento. Не стесняйтесь, присылайте мне сообщения, если вы хотите получить еще несколько советов, относящихся к вашей настройке.
источник
Другой метод заключается в использовании стратегии развертывания копии хакатонов magento, которая выглядит примерно так в вашем файле composer.json:
Использование вышеописанного метода копирует установленные файлы от поставщика в фактическую установку, что позволяет зафиксировать его в Git и развернуть в обычном режиме, без необходимости какой-либо установки композитором.
Я не большой поклонник извлечения из сторонних репозиториев, когда вы собираетесь делать живое развертывание, и зависеть от сторонних репозиториев довольно рискованно, если у вас нет какого-то прокси-кэша для вашей сети ,
Прочитайте эту статью, и она даст вам другую точку зрения: http://www.letscodejavascript.com/v3/blog/2014/03/the_npm_debacle
По сути, NPM вышел из строя (вроде ...), и все системы сборки перестали работать (для критических развертываний!), Потому что они напрямую зависели от NPM. (NPM похож на Packagist для Javascript, за исключением того, что NPM фактически содержит файл, а Packagist просто указывает на репозитории модулей Github - поправьте меня, если я ошибаюсь)
редактировать: только красный ответ fschmengler .. Это развитие его 1-го подхода
источник
Важно понимать, что Composer - это не инструмент развертывания, а инструмент разработки.
Существуют разные подходы к подготовке развертывания со всеми зависимостями:
composer install
и создает архив с результатом, который вы можете развернуть повторяемым на разных целевых системахcomposer install
на сервере, а затем переключает символические ссылки, как предложено @ jharrison.au, является вариантом этогоЭто в стороне, я не рекомендую использовать композитор для каждого отдельного модуля и только сохранить
composer.json
иcomposer.lock
в репозитории проекта. Это переусердствует и делает разработку ненужно сложной. Это имеет смысл для кода, который повторно используется в нескольких проектах, но зачем вам помещать специфичный для проекта код в отдельные репозитории?Моя текущая структура проекта выглядит следующим образом (с использованием альтернативных инсталляторов компоновщика AOE ):
src
содержит все специфичные для проекта модули. Composer также устанавливает любые другие модули Magento здесь.modman
ссылки наsrc
так, чтобы модман мог легко обрабатывать символические ссылкиwww
это корень Composer устанавливает ядро Magento здесьТаким образом, я включаю внешние модули в хранилище. Если вы предпочитаете не делать этого, настройте его следующим образом:
src
содержит все специфичные для проекта модули. Чтобы включить их.modman
так, чтобы modman создавал символические ссылки, используйтеmodman link
.modman
находится в.gitignore
. Composer устанавливает модули Magento здесьwww
это корень Composer устанавливает ядро Magento здесьисточник