Здравствуйте, мне очень хочется внедрить в свой проект CI/CD, но практического опыта никогда не было.
Гора прочтённых по этой теме статей приводит меня к ответу "пиши своё", на что нет никаких ресурсов.
Имеется:
- Закрытый коммерческий проект
- Свой сервер на debian с доступом по SSH
- Проект на phpBB 3.0.12 (никаких composer, тестов и скупая документация в коде)
- Гора написанного поверх и рядом кода (нефорумная логика, никакой документации, стиля кодирования и тестов)
- PHP 5.3 (подъем до 5.4 ломает работоспособность, а на адаптирование кода уйдут месяцы)
- Шаблонизатор HTML пробрасывает PHP переменные в JS через SCRIPT теги
- В JS чересчур активно используется формирование html конкатенацией строк и дальнейшим вводом в innerHTML
- Тестовый сабдомен со своей базой и кодом
Рабочий процесс сейчас:
- Фича описывается в своей ветке
- Создаётся pull-request
- Другой разработчик проверяет код, стиль, документацию
- После изменений ветка вливается в develop
- Руками достаём из ветки develop файлы, используя git diff --name-only
- Подключаемся по FTP к тестовому сабдомену, копируем из него файлы которые будем менять в отдельную папку (соблюдая иерархию папок)
- Перезаписываем поверх новые файлы из develop
- Запросом к SQL меняем версию сайта(она дописывается к статическим файлам для «сброса кеша»)
- Тестируем функционал на ограниченном количестве пользователей тестового сабдомена
- После всех правок заливаем ветку develop в master и повторяем всё то же с пункта 5 для основного домена
Рабочий процесс в мечтах:
- Фича описывается в своей ветке
- Создаётся pull-request
- Сервер прогоняет Code Coverage, PHPLint, PHPDCD, PHPMD, PHPCS и аналогичные тесты для HTML и JS только по изменённому коду(очевидно, что эти инструменты будут ругать уже имеющийся в изменённых файлах код)
- После изменений ветка вливается в develop
- Сервер реагирует на вливание в develop и автоматически меняет файлы на тестовом домене, меняет версию сайта в базе
- После всех изменений вливаем код в master
- После всех правок заливаем ветку develop в master и сервер делает всё то же с пункта 5 для основного домена
Вопросы:
- На основном домене хотелось бы иметь кнопки "откатить до" с выбором стабильных версий, такое возможно?
- Какие инструменты могут подойти для изменения рабочего процесса?Как наилучшим способом это организовать?
- Какие файлы отдавать на проверку автоматическим тестам, если на основном домене файлы должны быть после обработки autoprefixer,mqpacker,csso/uglify/html-minify?
Надеюсь, у Вас тоже навернулись слёзы при чтении описания моего текущего рабочего процесса и состояния кодовой базы.
Я далеко не профессиональный разработчик и молю о помощи специалистов.
Вариант "переписать всё под современные стандарты"
неприемлем в силу нехватки ресурсов, однако весь новый код команда разработчиков старается писать в ногу со временем.
Извиняюсь за то, что набросал в один вопрос слишком много информации и побочных вопросов.
Заранее огромное спасибо за советы по существу.