Π’Π΅Π»Π΅Π³ΡΠ°ΠΌ-Π±ΠΎΡ Π’Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π»ΡΠ΄Π΅ΠΉ Π½Π° ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°ΡΠΈΠΈ Ρ ΠΏΡΠΈΡ ΠΎΠ»ΠΎΠ³ΠΎΠΌ
ΠΠ°Π΄Π°ΡΠΈ Π±ΠΎΡΠ°:
- Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π»ΡΠ΄Π΅ΠΉ Π½Π° ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°ΡΠΈΠΈ;
- ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΠΎΠ²;
- ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠ²ΡΠ·Ρ Π΄Π»Ρ Π»ΡΠ΄Π΅ΠΉ, ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠΈΡ ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°ΡΠΈΡ.
Requirements
ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠ°
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
Π Π΅ΠΆΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
Π Π°Π±ΠΎΡΠ° Ρ GIT
- Python 3.10
- Docker 20.10+ (ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅).
ΠΠ°ΠΆΠ½ΠΎ!!! Π‘ΠΊΠ»ΠΎΠ½ΠΈΡΡΠΉΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ ΠΊΠ»ΡΡΠ΅ΠΌ: ΡΠΊΠ°ΠΆΠΈΡΠ΅ Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git clone ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ "--config core.autocrlf=input". Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π² Π΄ΠΎΠΊΠ΅ΡΠ΅, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Windows.
ΠΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΈΠ· ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π΅ΡΠ»ΠΈ ΠΈΠ½ΠΎΠ΅ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° docker
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π² Π΄ΠΎΠΊΠ΅ΡΠ΅. ΠΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½ΡΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π΄ΠΎΠΊΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½. ΠΡΠΊΡΠΎΠΉ Π»ΡΠ±ΠΎΠΉ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
docker --version
ΠΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΡΠ²Π΅Π΄Π΅Π½Π° Π²Π΅ΡΡΠΈΡ Π΄ΠΎΠΊΠ΅ΡΠ°, ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
Docker version 20.10.21, build baeda1f
ΠΡΠ»ΠΈ Π΄ΠΎΠΊΠ΅Ρ Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½, ΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈ Π΅Π³ΠΎ, ΡΠ»Π΅Π΄ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ
ΡΠ°Π½ΡΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ .env
, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½ .env.template
.
Π‘ΠΎΠ·Π΄Π°ΠΉ Π² ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°ΠΉΠ» .env
ΠΏΡΠΎΡΡΡΠΌ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΉΠ»Π° .env.template
.
ΠΠ°ΠΏΡΡΠΊ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ²
ΠΠΠΠΠ!!! Π΄Π°Π½Π½ΡΠΉ ΡΠ°Π·Π΄Π΅Π» ΡΡΡΠ°ΡΠ΅Π» ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ. ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈ ΠΊ ΡΠ°Π·Π΄Π΅Π»Ρ "Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ"
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π²ΡΠΏΠΎΠ»Π½ΠΈ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
docker-compose up -d --build
Π£Π±Π΅Π΄ΠΈΠΌΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π·Π°ΠΏΡΡΠ΅Π½Ρ:
docker-compose ps
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠΉ (ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ, Π½ΠΎ ΡΡΠ°ΡΡΡ Π²ΡΠ΅Ρ
ΡΠ΅ΡΠ²ΠΈΡΠΎΠ²
Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ running
):
NAME COMMAND SERVICE STATUS PORTS
bmc_companion_bot-bot-1 "/scripts/entrypointβ¦" bot running
bmc_companion_bot-nginx-1 "/docker-entrypoint.β¦" nginx running 0.0.0.0:80->80/tcp
bmc_companion_bot-postgres-1 "docker-entrypoint.sβ¦" postgres running 0.0.0.0:5435->5432/tcp
bmc_companion_bot-redis-1 "docker-entrypoint.sβ¦" redis running 0.0.0.0:6379->6379/tcp
bmc_companion_bot-webapi-1 "/scripts/entrypointβ¦" webapi running
ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://127.0.0.1/api/v1/healthcheck/ping/.
ΠΡΠ»ΠΈ Π²ΡΠ΅ ΠΎΠΊ, ΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ pong
.
Π§ΡΠΎΠ±Ρ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π» Π±ΠΎΡ, Π½ΡΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠΉ ΡΠΎΠΊΠ΅Π½ Π±ΠΎΡΠ° Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ BOT_TOKEN
Π² ΡΠ°ΠΉΠ»Π΅ .env
,
Π° Π·Π°ΡΠ΅ΠΌ ΡΠ½ΠΎΠ²Π° Π·Π°ΠΏΡΡΡΠΈΡΡ Π²ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ ΡΠ΅ΡΠ΅Π· docker-compose
.
ΠΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ:
docker-compose down
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Poetry
Poetry - ΡΡΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ Π΄Π»Ρ python, Π°Π½Π°Π»ΠΎΠ³ pip
. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Poetry Π·Π΄Π΅ΡΡ.
ΠΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Poetry:
Linux, macOS, Windows (WSL)
curl -sSL https://install.python-poetry.org | python3 -
Windows (Powershell)
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
ΠΠ°ΠΆΠ½ΠΎ: ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½ΡΠΆΠ½ΠΎ Π²ΡΡΡΠ½ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΡΡ ΠΊ Poetry Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄Ρ PATH.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° Mac ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² ΡΠ°ΠΉΠ» .zprofile
(/Users/your-user-name/.zprofile) ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ:
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
export PATH
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π·Π΄Π΅ΡΡ ΠΈ ΡΠ°Π·Π΄Π΅Π» Add Poetry to your PATH Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΠ°ΠΆΠ½ΠΎ: ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Poetry, Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π».
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ, ΡΡΠΎ Poetry ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ:
poetry --version
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°ΠΊΠΎΠΉ (Π²Π΅ΡΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π½Π΅ Π½ΠΈΠΆΠ΅):
Poetry (version 1.3.1)
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ
Π‘Π½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ΅Π΄Ρ:
poetry shell
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ:
poetry install
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° pre-commit Ρ ΡΠΊΠΎΠ²
ΠΠ°ΠΊΠ΅Ρ pre-commit Π²ΠΊΠ»ΡΡΠ΅Π½ Π² ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ
ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ poetry install
. ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ pre-commit
Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
pre-commit --version
Π ΠΎΡΠ²Π΅Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΡΠ²Π΅Π΄Π΅Π½Π° Π²Π΅ΡΡΠΈΡ pre-commit - ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π²ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ:
pre-commit 2.20.0
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈ pre-commit Ρ ΡΠΊΠΈ:
pre-commit install
pre-commit install --hook-type commit-msg
ΠΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΡΠΎΡΠ»Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΡΠΎ ΡΡ ΡΠ²ΠΈΠ΄ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅:
pre-commit installed at .git/hooks/pre-commit
Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΠ΅ Π³ΠΎΡΠΎΠ²ΠΎ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅.
ΠΠ°ΠΏΡΡΠΊ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ° ΡΠ΅ΡΠ²ΠΈΡΠ° adminpanel
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ° adminpanel Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π±ΡΠ»Π° Π·Π°ΠΏΡΡΠ΅Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ .
Π‘Π½Π°ΡΠ°Π»Π° ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π²ΡΠ΅ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ:
docker-compose down
# make down
ΠΠ°ΠΏΡΡΡΠΈΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ redis:
docker-compose up -d --build postgres
# make run s="postgres"
Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ adminpanel/src
cd adminpanel/src
ΠΡΠΏΠΎΠ»Π½ΠΈΠΌ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ:
python manage.py migrate
ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΠΏΠ΅ΡΡΠ·Π΅ΡΠ°:
python manage.py createsuperuser
ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠ΅ΡΠ²Π΅Ρ:
python manage.py runserver
ΠΠ»Ρ Π΄Π΅Π±Π°Π³Π° Π² PyCharm Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π² Script Path ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ manage.py, Π° Π² Parameters ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ runserver ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π°ΡΡ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ. ΠΠΈΠ±ΠΎ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ°ΠΉΠ» manage.py Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ.
ΠΠ°ΠΏΡΡΠΊ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ° ΡΠ΅ΡΠ²ΠΈΡΠ° bot
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π±ΠΎΡ Π·Π°ΡΠ°Π±ΠΎΡΠ°Π», Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²Π°Π»ΠΈΠ΄Π½ΡΠΉ ΡΠΎΠΊΠ΅Π½ Π±ΠΎΡΠ° Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ `BOT_TOKEN`.
ΠΡΠΎΡΠ΅ΡΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ° bot Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π·Π°ΠΏΡΡΠΊΠ° ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ° webapi, ΡΠΎΠ»ΡΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°ΠΉΠ».
ΠΠ°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡ bot:
python bot/src/run.py
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΠΌΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΠ°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅ΡΠ²ΠΈΡ webapi.
ΠΠΎΡΠ»Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² ΡΠ°ΠΉΠ»Π΅ models.py
Π½ΡΠΆΠ½ΠΎ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ. ΠΠ΅ΡΠ΅Π΄ ΡΡΠΈΠΌ ΡΠ±Π΅Π΄ΠΈΡΡ,
ΡΡΠΎ Ρ ΡΠ΅Π±Ρ Π·Π°ΠΏΡΡΠ΅Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ
.
ΠΠ°ΠΆΠ½ΠΎ: Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ webapi/src
.
ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈ Π² ΠΏΠ°ΠΏΠΊΡ webapi/src
:
cd webapi/src
Π‘ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ:
python -m flask db migrate -m "Your comment"
ΠΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ:
python -m flask db upgrade
ΠΠ°ΠΏΡΡΠΊ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ° ΡΠ΅ΡΠ²ΠΈΡΠ° celery
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠΉ Π½ΡΠΆΠ½ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ /adminpanel/src/
ΠΠ°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡ celery worker:
celery -A config.celery worker -l info
ΠΠ°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡ celery beat:
celery -A config.celery beat -l info
ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ ΠΏΡΠ°Π²ΠΈΠ» ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°. Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΡΡ Π½Π°ΠΉΠ΄Π΅ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° ΠΊΠΎΠ΄Π°, Π»ΠΈΠ½ΡΠ΅ΡΡ ΠΈ ΡΠΎΡΠΌΠ°ΡΠ΅ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅.
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Poetry. ΠΠ»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π³ΡΡΠΏΠΏΡ (ΡΠΌ. ΡΠ°ΠΉΠ» pyproject.toml
).
ΠΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π² Π³ΡΡΠΏΠΏΠ΅ tool.poetry.dependencies
:
[tool.poetry.dependencies]
python = "^3.10"
Django = "^4.1"
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ:
poetry add pendulum
ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π΄Π΅Π»ΡΡΡΡ Π½Π° Π³ΡΡΠΏΠΏΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π³ΡΡΠΏΠΏΠ° lint
- Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ Π»ΠΈΠ½ΡΠΈΠ½Π³Π°:
[tool.poetry.group.lint.dependencies]
flake8 = "^5.0.4"
flake8-broken-line = "^0.5.0"
flake8-quotes = "^3.3.1"
pep8-naming = "^0.13.2"
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π³ΡΡΠΏΠΏΡ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉ ΡΠ»Π°Π³ --group
ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π³ΡΡΠΏΠΏΡ):
poetry add pytest --group test
Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΠΎ ΡΡΠΈΠ»Ρ
ΠΡΠΏΠΎΠ»Π½ΡΠΉ ΠΈΠΌΠΏΠΎΡΡΡ ΠΈΠ· ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ², Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ
Π² src
. Π‘Π»Π΅Π΄ΠΈ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΎΠΈ ΠΈΠΌΠΏΠΎΡΡΡ Π½Π΅ Π½Π°ΡΠΈΠ½Π°Π»ΠΈΡΡ
Ρ ΠΏΠ°ΠΏΠΊΠΈ src
.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ²:
\
βββ project_name
β βββ src
β β βββ app
β β β βββ auth
β β β β βββ routes.py
β β β βββ models.py
β β βββ manage.py
βββ βββ docker
ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΈΠΌΠΏΠΎΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈΠ· ΡΠ°ΠΉΠ»Π° models.py
Π² ΡΠ°ΠΉΠ» routes.py
.
ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ:
from src.app.models import User
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ:
from app.models import User
ΠΡΠ»ΠΈ ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡ PyCharm, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΡ ΠΏΠΎΠΌΠ΅ΡΠΈΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ src
ΠΊΠ°ΠΊ Source Root
(ΠΏΡΠ°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ -> Mark Directory as -> Mark as Source Root), ΡΠΎΠ³Π΄Π° PyCharm Π±ΡΠ΄Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ
Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈΠΌΠΏΠΎΡΡΡ.
Π’Π°ΠΊΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΎΠ² Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Π΄ΠΎΠΊΠ΅ΡΠ΅.
ΠΠ½ΡΡΡΠΈ Π΄ΠΎΠΊΠ΅Ρ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΏΠ°ΠΏΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ Π·Π°Ρ
ΠΎΡΠΈΠΌ
Π½Π°Π·Π²Π°ΡΡ Π΅Ρ app
. Π Dockerfile ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
ARG HOME_DIR=/app
WORKDIR $HOME_DIR
COPY ./src .
ΠΠ° Ρ
ΠΎΡΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ src
, Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ app
. ΠΠΌΠΏΠΎΡΡ ΠΈΠ· src
ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅:
ModuleNotFoundError: No module named 'src'
Conventional Commits
Π’Π²ΠΎΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡΠ°ΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ Conventional Commits.
Pre-commit Ρ
ΡΠΊ conventional-pre-commit
Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠΌ.
ΠΡΠ»ΠΈ ΡΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠΈ, ΡΠΎ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ ΡΡ ΡΠ²ΠΈΠ΄ΠΈΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅:
commitizen check.........................................................Failed
- hook id: conventional-pre-commit
- exit code: 1
ΠΠ»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΊ ΠΊΠΎΠΌΠΌΠΈΡΠ°ΠΌ, ΡΡ ΠΌΠΎΠΆΠ΅ΡΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ Conventional Commit Π΄Π»Ρ PyCharm:
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ IDE
ΠΡΠΎΠ΅ΠΊΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°ΠΉΠ» .editorconfig
- ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΡ Ρ Π½ΠΈΠΌ, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ
Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅.
Π€ΠΎΡΠΌΠ°ΡΠ΅Ρ ΠΈ Π»ΠΈΠ½ΡΠ΅Ρ
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΡΠΌΠ°ΡΠ΅ΡΠ° ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ black.
ΠΠΎΠ½ΡΠΈΠ³ black ΡΠΌ. Π² ΡΠ°ΠΉΠ»Π΅ pyproject.toml
Π² ΡΠ΅ΠΊΡΠΈΠΈ [tool.black]
.
ΠΠΈΠ½ΡΠ΅Ρ - flake8, ΠΊΠΎΠ½ΡΠΈΠ³ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ setup.cfg
.
ΠΡΠ»ΠΈ ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡ PyCharm, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΡ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ black ΡΠ΅ΡΠ΅Π· External Tools:
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π½Π°ΡΠΈΡΡ hot key Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅
ΠΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅.
ΠΠ°ΠΆΠ½ΠΎ!!! ΠΠ»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠ΄-ΡΠ΅Π²ΡΡ, Π΄Π»Ρ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ merge conflict ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΠΉΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»:
- ΠΠ΄ΠΈΠ½ PR ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ².
- Π ΠΊΠΎΠΌΠΌΠΈΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ²ΠΎΡ Π·Π°Π΄Π°ΡΠ°.
- ΠΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠΉ ΠΏΠ°ΠΏΠΊΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ, Π΄ΠΎΠ±Π°Π²Π»ΡΠΉ ΡΠ°ΠΉΠ»Ρ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ.
- ΠΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠΉ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠΉ ΠΈΡ Π² ΠΊΠΎΠΌΠΌΠΈΡ.
ΠΡΠ°Π²ΠΈΠ»Π° ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅ΠΌ
ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ Π²Π΅ΡΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»Ρ {type}/{name}
, Π³Π΄Π΅:
type
: ΡΠΈΠΏ (feat, fix ΠΈ Ρ.ΠΏ.) ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ conventional-commits;name
: Π²Π½ΡΡΠ½ΠΎΠ΅ ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ (ΡΠ»ΠΎΠ²Π° ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ Π΄Π΅ΡΠΈΡΠΎΠΌ).
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ conventional-commits ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΊ ΠΊΠΎΠΌΠΌΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΡΠΈΠΏΠ° (feat, fix ΠΈ Ρ.ΠΏ.).
ΠΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΠΉΡΡ ΠΏΡΠΎΡΡΡΡ ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΎΠΊ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉ ΡΠ»ΠΎΠ²Π° "Π΄ΠΎΠ±Π°Π²Π»Π΅Π½", "ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½" Π²ΠΌΠ΅ΡΡΠΎ "Π΄ΠΎΠ±Π°Π²ΠΈΠ»(Π°)", "ΠΈΡΠΏΡΠ°Π²ΠΈΠ»(Π°)", "ΠΏΠΎΡΠΈΠΊΡΠΈΠ»(Π°)",
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π½Π΅ Π±ΡΠ»ΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ², ΠΏΠ΅ΡΠ΅Π΄ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΈΠ½Π΄Π΅ΠΊΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (Π½Π°Ρ ΠΎΠ΄ΡΡΡ Π² ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°):
isort .
black .
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅ΡΡ ΡΠΌΠ΅Π»ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ git add ΠΈ git commit.
ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ git commit
ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΡΠ΅ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,
ΡΠ°ΠΊΠΈΠ΅:
isort.............................Failed
- hook id: isort
- files were modified by this hook
Skipped 2 files
.../site-packages/isort/main.py:104: UserWarning: Unable to parse file ./bot/src/run.py due to [Errno 2] No such file or directory: '/Users/denis/Documents/projects/bmc/bmc_companion_bot/bot/src/run.py.isorted' -> '/Users/denis/Documents/projects/bmc/bmc_companion_bot/bot/src/run.py'
warn(f"Unable to parse file {file_name} due to {error}")
/Users/denis/Library/Caches/pypoetry/virtualenvs/bmc-TOtCo-TH-py3.10/lib/python3.10/site-packages/isort/main.py:104: UserWarning: Unable to parse file ./webapi/src/app/__init__.py due to [
Π ΡΡΠΎΠΌ Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΡΡΡΠ°ΡΠ½ΠΎΠ³ΠΎ, ΠΏΡΠΎΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈ Π΅ΡΠ΅ ΡΠ°Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π² ΠΈΠ½Π΄Π΅ΠΊΡ:
git add .
ΠΠ°ΡΠ΅ΠΌ ΡΠ½ΠΎΠ²Π° ΠΏΠΎΠ²ΡΠΎΡΠΈ ΠΊΠΎΠΌΠΌΠΈΡ.
- ΠΠ»ΠΎΠ½ΠΈΡΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ:
git clone git@github.com:Studio-Yandex-Practicum/bmc_companion_bot.git
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ· Π³Π»Π°Π²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ:
git pull origin develop
-
Π‘ΠΎΠ·Π΄Π°ΠΉ Π²Π΅ΡΠΊΡ Π΄Π»Ρ ΡΠ²ΠΎΠ΅ΠΉ Π·Π°Π΄Π°ΡΠΈ, ΡΠ»Π΅Π΄ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ;
-
ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡ Π½Π° ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Π²Π΅ΡΠΊΡ:
git checkout feat/model_user
-
ΠΠ½Π΅ΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄;
-
ΠΡΠΏΠΎΠ»Π½ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (Π½Π°Ρ ΠΎΠ΄ΡΡΡ Π² ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°):
isort .
black .
- ΠΠΎΡΠΌΠΎΡΡΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ Π±ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ:
git status
ΠΠΎΠ±Π°Π²Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΈΠ½Π΄Π΅ΠΊΡ:
git add model.py service.py
Π‘ΠΎΠ·Π΄Π°ΠΉ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ ΠΈ Π·Π°ΠΏΡΡ Π΅Π³ΠΎ:
git commit -m 'feat: commit description'
git push origin feat/model_user
- Π‘ΠΎΠ·Π΄Π°ΠΉ pull request ΠΈΠ· ΡΠ²ΠΎΠ΅ΠΉ Π²Π΅ΡΠΊΠΈ Π² Π²Π΅ΡΠΊΡ
develop