Судя по тегу "gitlab", тебе надо на сервер установить
gitlab-runner, настроить его, а в GitLab в настройках проекта его включить для проекта. В корне репозитория положить файл
.gitlab-ci.yml с примерно таким содержанием:
stages:
- deploy
deploy:
stage: deploy
environment:
name: master
script:
- cd /app
- git reset --hard
- git pull origin master
- source ./env/bin/activate
- pip install -r ./requirements.txt
- python3 manage.py migrate
- python3 manage.py collectstatic --noinput
- sudo supervisorctl restart ololo.backend
- python3 manage.py clearcache
- python3 manage.py warmcache
only:
- master
tags:
- linux
- shell
Тогда, при попадании коммита в master, раннер на сервере будет "узнавать" об этом и выполнять команды, описанные в секции script.
Мой пример не совсем production-ready, так сказать, потому что состоит из одного шага - deploy. Если по-хорошему делать, то перед ним, как минимум, должен быть шаг запуска тестов, без успешного прохождения которых шаг deploy выполняться не будет. Это дает хоть какую-то гарантию, что код, попавший в master, будет работать на сервере. Имей это в виду)