-
3.1. Настройка poetry
3.2. Настройка pre-commit
-
4.2. Запуск в Docker
4.3. GitHub Actions
Проект телеграм-бота, который позволяет разгрузить кураторов/координаторов фонда “Провидение”, максимально автоматизировать процессы по взаимодействию с родителями и волонтерами.
...
Имя | Описание |
---|---|
.data | Директория для хранения логов проекта. |
bot | ... |
bot/conversations | ... |
core | ... |
src | ... |
Примечание: использование Poetry и pre-commit при работе над проектом обязательно.
Poetry - это инструмент для управления зависимостями и виртуальными окружениями, также может использоваться для сборки пакетов. В этом проекте Poetry необходим для дальнейшей разработки приложения, его установка обязательна.
Как скачать и установить?
Установите poetry следуя инструкции с официального сайта.
Команды для установки:
Для UNIX-систем и Bash on Windows вводим в консоль следующую команду:curl -sSL https://install.python-poetry.org | python -
Для WINDOWS PowerShell:
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
После установки перезапустите оболочку и введите команду
poetry --version
Если установка прошла успешно, вы получите ответ в формате
Poetry (version 1.3.1)
Для дальнейшей работы введите команду:
poetry config virtualenvs.in-project true
Выполнение данной команды необходимо для создания виртуального окружения в папке проекта.
После предыдущей команды создадим виртуальное окружение нашего проекта с помощью команды:
poetry install
Результатом выполнения команды станет создание в корне проекта папки .venv. Зависимости для создания окружения берутся из файлов poetry.lock (приоритетнее) и pyproject.toml
Для добавления новой зависимости в окружение необходимо выполнить команду
poetry add <package_name>
Пример использования:
poetry add starlette
Также poetry позволяет разделять зависимости необходимые для разработки, от основных. Для добавления зависимости необходимой для разработки и тестирования необходимо добавить флаг --dev
poetry add <package_name> --dev
Пример использования:
poetry add pytest --dev
Порядок работы после настройки
Чтобы активировать виртуальное окружение, введите команду:
poetry shell
Существует возможность запуска скриптов и команд с помощью команды без активации окружения:
poetry run <script_name>.py
Примеры:
poetry run python script_name>.py
poetry run pytest
poetry run black
Порядок работы в оболочке не меняется. Пример команды для Win:
python src\run_bot.py
Доступен стандартный метод работы с активацией окружения в терминале с помощью команд:
Для WINDOWS:
source .venv/Scripts/activate
Для UNIX:
source .venv/bin/activate
Настройка pre-commit
pre-commit install
Далее при каждом коммите у вас будет происходить автоматическая проверка линтером, а так же будет происходить автоматическое приведение к единому стилю.
Перед запуском проекта необходимо создать копию файла
.env.example
, назвав его .env
и установить значение токена бота
Запуск проекта локально
python src/main.py
Отладка приложения с ботом в режиме webhook на локальном компьютере требует выполнения дополнительных действий:
Необходимые действия
В случае отсутствия сервера с доменным именем и установленным SSL-сертификатом, для отладки приложения можно воспользоваться ngrok для построения туннеля до вашего компьютера.
Для этого необходимо:
- Скачать и установить ngrok
- Зарегистрироваться в сервисе ngrok и получить токен
- Зарегистрировать полученный токен на локальном комьютере
ngrok config add-authtoken <ваш токен>
- Запустить тоннель ngrok
ngrok http 8000 --host-header=site.local
- Скопировать из консоли адрес (
https
), предоставленный сервисомngrok
, в переменную окруженияAPPLICATION_URL
:
APPLICATION_URL=https://1234-56-78-9.eu.ngrok.io # пример
- Запустить приложение с ботом в режиме webhook (см. выше)
python src/run_webhook_api.py
Более подробная информация об использовании сервиса ngrok доступна на официальном сайте
python src/run_webhook_api.py
Запуск проекта через Docker
Можно запустить бота через docker-compose в тестовом режиме. Для этого в корневой папке проекта выполнить команду
docker-compose up -d --build
Запуск проекта на сервере в docker-контейнере
Workflow:
tests
- проверка кода на соответствие стандарту PEP8;deploy
- автоматический деплой проекта на боевой сервер;
Подготовьте сервер:
- Войдите на свой удаленный сервер в облаке.
- Установите
docker
:
sudo apt install docker.io
- Установите docker-compose, с этим вам поможет официальная документация.
- В репозитории на Гитхабе добавьте данные в
Settings -> Secrets -> Actions -> New repository secret
:
DOCKER_USERNAME - ваш username на dockerhub
DOCKER_PASSWORD - ваш пароль на dockerhub
USER - имя пользователя для подключения к серверу
HOST - IP-адрес вашего сервера
SSH_KEY - скопируйте приватный ключ с компьютера, имеющего доступ к боевому серверу (cat ~/.ssh/id_rsa)
PASSPHRASE - если при создании ssh-ключа вы использовали фразу-пароль, то сохраните её в эту переменную
TELEGRAM_TOKEN=5274023561:AAH3lUgvoGvLN51wtMze_ZGrTO0RRHGTuJM
EMAIL_BOT=bot_mail@mail.ru
EMAIL_BOT_PASSWORD=EmailPassword
EMAIL_CURATOR=curator_mail@mail.ru
LOG_LEVEL=INFO