То, что вам нужно называется "Система доставки и развёртывания" или "CI/CD". Работает следующим образом:
- На Git сервере создаётся репозиторий - Github, GitLab и прочие сервисы (есть простые и лёгкие варианты для хостинга на своём сервере)
- На сервере в разделе CI/CD настраиваете пайплайн на пуш или пулл-реквест в репозиторий: обычно это запуск скрипта или нескольких в докере
- При наступлении данного события сервер запускает пайплайн
Обычно пайплайн состоит из нескольких шагов:
- Сборка
- Тестирование
- Доставка
- Развёртывание
В зависимости от особенностей проекта число шагов может меняться. Для доставки и развёртывания есть два стандартных метода:
- CI/CD агент на сервере, который выполняет нужные скрипты в контексте оболочки сервера
- Скрипт, который подключается к целевому серверу по SSH и через него же передаёт нужные файлы (артефакты - в контексте CI/CD процессов).