Как правильно вынести повторяющиеся части кода из нескольких проектов?
Есть несколько сайтов, в которых используется несколько одинаковых модулей.
Каждый модуль — это набор html, js, css и (или) php файлов, плюс ещё некоторые работают с базой данных.
Я уже вынес все эти модули в отдельные проекты, но пока это выглядит так:
1. В модуле происходят изменения, он проверяется, пушится на гитхаб;
2. В каждый сайт по очереди копируются изменившиеся исходники, возможно меняется структура БД (тоже вручную);
3. Проект проверяется, в его репозитории тоже происходит коммит(!).
4. git-ftp всё это дело грузит на продакшн, где, предварительно, тоже БД обновляется ручками.
Доступ по ssh при необходимости можно запросить, но там венда 0_о
Короче, заколебало меня это дело, хочется всё автоматизировать, особенно работа с базой меня вымораживает...
Добрые и умные люди, подскажите, какие технологии использовать, чтобы максимально всё это упростить? Вообще любому совету буду рад, но желательно всё-таки, чтобы была возможность после обновления модуля лёгкой командой в терминале обновить его в нужном проекте (лучше, если по целевым папкам исходники разлетятся, а ещё лучше сделать сразу минификацию и объединение с другими исходниками, хотя не знаю, насколько корректно это будет выглядеть для системы контроля версий), миграцию БД там сделать, а после проверки и допилки также легко обновить всё на сервере.
Как я понимаю, тут нужен прям набор инструментов, о которых я много-много слышал, но в голове сейчас такой бордак, что лучше получить хороший совет... Для лучшего понимания ситуации, все инструменты, которые я до этого использовал для разработки: notepad++ и браузер. С недавнего времени стал использовать VSCode, а вместе с ним гит приручился (почти, но я стараюсь).
Чтобы не править базу руками - пишем миграции, будет фреймворко-зависимо но удобно вызываться из консоли. Всё что нужно выполнять помимо подтягивания кода (запуск миграций, например) - в git hooks.
Спасибо за ответ.
Вы не могли бы указать инструмент для работы с миграциями? Я читал про них, насколько понял, в фреймворках для их использования уже что-то из коробки идёт, а как быть с вот такими голыми проектами? Они не настолько сложные, чтобы ставить их на фреймворк...
Yii2, Laravel, Doctrine 2.2. Не охота брать фреймворк - выбираем последний вариант: доктрина - компонент symfony, но используется отдельно в куче проектов; DBAL, если мне не изменяет склероз, вообще не ORM а интерпретатор в диалекты.
У меня похожая ситуация. Решил использовать deployer. Сделал доступ по ключу на все сервера со своего компьютера. Можно создавать свои таски, объединять их по категориям, чтобы сразу на нескольких серверах выполнялось. С локальной вендой подружить сложно, но можно. Есть свои рецепты, но можно понаписать своих скриптов. Я самим деплоем не пользуюсь. В принципе, если бы я создал папку с sh скриптами, было бы тоже самое, но инструмент на php, что немного упрощает, есть некоторые вещи, которые полезные, а самому писать - не хочется время тратить.
С git hooks у меня не вышло, потому что всякое разное иногда нужно делать, на bash или python буду долго писать.