Не понятен пункт 5. Зачем сливать из боевого в гит? В гите должны храниться только исходные коды, по этому там всегда самая актуальная версия. И суть тестового сервера теряется из-за пункта 3. Обычно строится так:
Локальная машина разработчика -> пуш в git ветку test -> ci сервер сам накатывает ветку test на тестовый сервер -> разраб проверяет обновление -> мерж git ветки test с master -> ci накатывает ветку master на боевой сервер.
Параллельно по таймауту работают джобы по бэкапу боевого сервера на резервный, базы данных(mysqldump) и статики(rsync), например, раз в день с 3:00 до 4:00. Обновление базы на тестовом сервере обычно никак не автоматизируется, ибо там всегда каша из мусорных данных, которые наплодили автотесты.