будет возможность разворачивать локальные копии проектов у разработчиков в докере, разворачивать тестовый сервер для согласования новых фич и, иногда, нового контента с заказчиком, а так же проводится тестирование методом тыка. Ну и в конце концов прод сервер, куда будут выкатываться согласованные фичи.
И все эти изменения должны гулять от разраба к мастеру и, в идеале, от мастера к разрабу, потому что контент-менеджер тоже может делать какие то контентные правки.
Причём под словом «контент», взносимый разрабом, я подразумеваю скорее, например, настройки служб доставки. Хотя иногда требуется даже показывать товары на ветрине на тесте до выката из в прод. (особенно на проекте, где у заказчика битрикс работает как api бекенд к фронтенду на Vue.js)
Изменения которые необходимо передавать:
• Изменения кода без ядра
• Изменения бд через миграции
• Изменения контента / настроек в базе
• Изменения контента в папке /upload/
Ход моих мысли и встающие вопросы:
Изменения в коде очевидно как передавать: на то есть git.
Как передавать изменения структуры бд тоже понятно: есть много готовых решений с миграциями. Хотя встаёт вопрос: а что если изменения структуры были произведены разрабом через админку? Как реплицировать эти изменения БД в файл миграции?
Как передавать изменения контента или настроек модулей? Миграции, как я понимаю (и как я прочитал все Readme всех доступных решений) передают структуру, а не контент.
Что делать с папкой /upload/? На сколько я изучил лучшие практики - никто эту папку в гит не кладёт. А что тогда делать с передачей контента?
Предположим, я разраб, который должен подключится к разработке проекта: что я должен сделать? Развернуть бекап мастера на локале, а затем подключится к репозиторию и сделать git clone? (И тут ещё появляется вопрос миграций: получается база то будет актуальная, и этап миграции надо пропустить?)
А как иначе? Ядро передавать - это же плохо. А откуда его взять иначе?
Почему я задаюсь этими вопросами? Потому что я начинающий devops, меня крайне затягивает эта тема, а теперь передо мной встала задача замутить такое аж на двух проектах с битриксом. С битриксом я знаком достаточно поверхностно.
Не ругайте, если кому то покажется, что я задаю глупые вопросы: тогда поверните меня в нужное русло. А может при такой тесной интеграции веток разработки все это вообще не нужно..?
Какие у вас будут на этот счёт мысли?
P.S. Я уже прошёлся поиском по чату в попытках найти идеи или рассуждения на эту тему, но ничего конструктивного не нашёл.
>Что делать с папкой /upload/? На сколько я изучил лучшие практики - никто эту папку в гит не кладёт. А что тогда делать с передачей контента? Как вариант использовать rsync для передачи /upload/
На тесте синхронизировать папку с локальными копиями? Выглядит интересным, но такое чувство, что тогда что то должно с базой рассинхронится
>Как передавать изменения контента или настроек модулей? Миграции, как я понимаю (и как я прочитал все Readme всех доступных решений) передают структуру, а не контент. Вот этот модуль смотрели? https://marketplace.1c-bitrix.ru/solutions/sprint.migration/ Есть wiki https://github.com/andreyryabin/sprint.migration/wiki и куча примеров файлов миграций. Можно и контент переносить, элементы, разделы и прочее. Настройки модулей наверняка тоже можно. Пример добавления элемента: https://github.com/andreyryabin/sprint.migration/blob/master/examples/Version20190606000012.php
Смотрел. Основная проблема в том, что получается разраб должен вообще забыть про админку и весь контент пихать через код миграций? Или, иначе, где то должны генерироваться миграции (хотя бы контента) автоматически. Есть ещё одно решения, кажется, похожее, и они даже заявляют поддержку автоматической генерации миграций: https://github.com/arrilot/bitrix-migrations
думаю, если в конце всех изысканий вы поделитесь общей схемой с сообществом - это будет очень годный контент :)
Обсуждают сегодня