- tests - Проверка кода на соответствие стандарту PEP8 (с помощью пакета flake8) и запуск pytest. Дальнейшие шаги выполнятся только если push был в ветку master или main.
- build_and_push_to_docker_hub - Сборка и доставка докер-образов на Docker Hub
- deploy - Автоматический деплой проекта на боевой сервер. Выполняется копирование файлов из репозитория на сервер:
- send_message - Отправка уведомления в Telegram
-
Создайте и активируйте виртуальное окружение, обновите pip:
python3 -m venv venv . venv/bin/activate python3 -m pip install --upgrade pip
-
Запустите автоматические тесты:
pytest
-
Отредактируйте файл nginx/default.conf и в строке server_name впишите IP виртуальной машины (сервера).
-
Скопируйте подготовленные файлы docker-compose.yaml и nginx/default.conf из вашего проекта на сервер:
-
Зайдите в репозиторий на локальной машине и отправьте файлы на сервер.
scp docker-compose.yaml <username>@<host>/home/<username>/docker-compose.yaml sudo mkdir nginx scp default.conf <username>@<host>/home/<username>/nginx/default.conf
В репозиторий на Гитхабе добавьте данные в Settings - Secrets - Actions secrets:
- DOCKER_USERNAME - имя пользователя в DockerHub
- DOCKER_PASSWORD - пароль пользователя в DockerHub
- HOST - ip-адрес сервера
- USER - пользователь
- SSH_KEY - приватный ssh-ключ (публичный должен быть на сервере)
- PASSPHRASE - кодовая фраза для ssh-ключа
- DB_ENGINE - django.db.backends.postgresql
- DB_HOST - db
- DB_PORT - 5432
- DB_NAME - postgres (по умолчанию)
- POSTGRES_USER - postgres (по умолчанию)
- POSTGRES_PASSWORD - postgres (по умолчанию)
- SECRET_KEY - секретный ключ приложения django (необходимо чтобы были экранированы или отсутствовали скобки)
- TELEGRAM_TO - id своего телеграм-аккаунта (можно узнать у @userinfobot, команда /start)
- TELEGRAM_TOKEN - токен бота (получить токен можно у @BotFather, /token, имя бота)
-
Установите Docker и Docker-compose:
sudo apt install docker.io sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
-
Создать папку nginx:
mkdir nginx
-
После успешного деплоя собрать статические файлы (статику):
docker-compose exec web python manage.py collectstatic --no-input
-
Применить миграции:
docker-compose exec web python manage.py migrate --noinput
-
Создать суперпользователя:
docker-compose exec web python manage.py createsuperuser
Документация доступна по эндпойнту: http://localhost/redoc/