From 4281342416c077c0f3477f5634c0ddd0881d0039 Mon Sep 17 00:00:00 2001 From: Aleksey Sabilin Date: Sun, 12 Jul 2026 12:18:46 +0300 Subject: [PATCH] =?UTF-8?q?fix(makefile):=20=D0=B2=D0=BE=D1=81=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D0=BD=D0=BE=D0=B2=D0=B8=D1=82=D1=8C=20UTF-8=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BC=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=80=D0=B8=D0=B8=20?= =?UTF-8?q?=D0=B8=20help-=D1=82=D0=B5=D0=BA=D1=81=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Кириллица была повреждена в 6890dff (замена на ?); восстановлено из 16203ba с сохранением stage URL и prune-скриптов. --- Makefile | 246 +++++++++++++++++++++++++++---------------------------- 1 file changed, 123 insertions(+), 123 deletions(-) diff --git a/Makefile b/Makefile index aefacc3..d2a92f2 100644 --- a/Makefile +++ b/Makefile @@ -1,14 +1,14 @@ .PHONY: help clean compile shell test eunit test-api test-all \ dialyzer xref cover docs release run stop logs -# ????? ??? ?????? (?????? ??? ??????, ??? ?????) +# Цвета для вывода (только для команд, где нужны) GREEN := \033[0;32m YELLOW := \033[1;33m RED := \033[0;31m BLUE := \033[0;34m NC := \033[0m -# ?????????? +# Переменные REBAR3 := rebar3 SNAME := eventhub SHELL := /bin/bash @@ -16,8 +16,8 @@ SHELL := /bin/bash # ============================================================================ # HELP # ============================================================================ -help: ## ???????? ??? ????????? - @echo "EventHub - Makefile ???????:" +help: ## Показать это сообщение + @echo "EventHub - Makefile команды:" @echo "" @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \ awk 'BEGIN {FS = ":.*?## "}; {printf " %-20s %s\n", $$1, $$2}' @@ -25,40 +25,40 @@ help: ## ???????? ??? ????????? # ============================================================================ # BUILD # ============================================================================ -compile: ## ?????????????? ?????? - @echo "?????????? ???????..." +compile: ## Скомпилировать проект + @echo "Компиляция проекта..." @$(REBAR3) compile - @echo "? ?????????? ?????????" + @echo "✓ Компиляция завершена" -clean: ## ???????? ?????? - @echo "??????? ???????..." +clean: ## Очистить проект + @echo "Очистка проекта..." @$(REBAR3) clean #@rm -rf _build build/ct_run.* deps logs *.log @rm -rf _build logs/ct_run.* deps doc app *.log - @echo "? ??????? ?????????" + @echo "✓ Очистка завершена" -deps: ## ?????????? ??????????? - @echo "????????? ????????????..." +deps: ## Установить зависимости + @echo "Установка зависимостей..." @$(REBAR3) get-deps - @echo "? ??????????? ???????????" + @echo "✓ Зависимости установлены" -update-deps: ## ???????? ??????????? - @echo "?????????? ????????????..." +update-deps: ## Обновить зависимости + @echo "Обновление зависимостей..." @$(REBAR3) update-deps - @echo "? ??????????? ?????????" + @echo "✓ Зависимости обновлены" # ============================================================================ # DEVELOPMENT # ============================================================================ -shell: ## ????????? ????????????? ???????? - @echo "?????? Erlang shell..." +shell: ## Запустить интерактивную оболочку + @echo "Запуск Erlang shell..." @$(REBAR3) shell --sname $(SNAME) -run: ## ????????? ?????????? (foreground) - @echo "?????? ??????????..." +run: ## Запустить приложение (foreground) + @echo "Запуск приложения..." @$(REBAR3) shell --sname $(SNAME) -test-server: ## ????????? ???????? ?????? ? ???? +test-server: ## Запустить тестовый сервер в фоне @echo "Cleaning old data..." @rm -rf Mnesia.* @echo "Starting server..." @@ -66,48 +66,48 @@ test-server: ## ????????? ???????? ?????? ? ???? @echo "PID: $$!" @for i in 1 2 3 4 5 6 7 8 9 10; do \ if curl -s http://localhost:8080/health | grep -q "ok"; then \ - echo "? Server ready at http://localhost:8080"; \ + echo "✓ Server ready at http://localhost:8080"; \ break; \ fi; \ sleep 1; \ done -stop: ## ?????????? ?????????? - @echo "????????? ??????????..." +stop: ## Остановить приложение + @echo "Остановка приложения..." @pkill -f "rebar3 shell --sname $(SNAME)" || true @pkill -f "beam.*$(SNAME)" || true @pkill -f beam.smp || true - @echo "? ?????????? ???????????" + @echo "✓ Приложение остановлено" -restart: stop run ## ????????????? ?????????? +restart: stop run ## Перезапустить приложение # ============================================================================ # TESTING # ============================================================================ -test: eunit ## ????????? ??? ????? (????? ??? eunit) +test: eunit ## Запустить все тесты (алиас для eunit) -eunit: ## ????????? EUnit ????? - @echo "?????? EUnit ??????..." +eunit: ## Запустить EUnit тесты + @echo "Запуск EUnit тестов..." @$(REBAR3) eunit --sname $(SNAME)_test --verbose -eunit-module: ## ????????? ????? ??? ?????? (make eunit-module MODULE=core_calendar_tests) - @echo "?????? ?????? ??? ?????? $(MODULE)..." +eunit-module: ## Запустить тесты для модуля (make eunit-module MODULE=core_calendar_tests) + @echo "Запуск тестов для модуля $(MODULE)..." @$(REBAR3) eunit --sname $(SNAME)_test --module=$(MODULE) --verbose -eunit-verbose: ## ????????? EUnit ????? ? ????????? ??????? - @echo "?????? EUnit ?????? (verbose)..." +eunit-verbose: ## Запустить EUnit тесты с подробным выводом + @echo "Запуск EUnit тестов (verbose)..." @$(REBAR3) eunit --sname $(SNAME)_test --verbose -test-api: ## ????????? Common Test ??? API +test-api: ## Запустить Common Test для API @echo "Cleaning old data..." @rm -rf logs/test/ct/ct_run.* @bash scripts/fix-rebar-unit-symlink.sh @$(REBAR3) ct --sname $(SNAME)_api_test #-v -wsl-ext4-dirs: ## WSL: ??????? logs/data ?? ext4 (????????) +wsl-ext4-dirs: ## WSL: каталоги logs/data на ext4 (рекомендуется) @bash scripts/wsl-ext4-dirs.sh -fix-rebar-test-dirs: ## WSL: ???????? ????? symlink unit/api ? _build +fix-rebar-test-dirs: ## WSL: починить symlink unit/api в _build @bash scripts/fix-rebar-unit-symlink.sh test-api-remote: @@ -132,31 +132,31 @@ test-api-docker: -e "ADMIN_WS_HOST=ws://eventhub:8446" \ eventhub-tests -test-all: eunit test-api ## ????????? ??? ????? (EUnit + API) +test-all: eunit test-api ## Запустить ВСЕ тесты (EUnit + API) @echo "========================================" - @echo " ??? ????? ????????!" + @echo " ВСЕ ТЕСТЫ ПРОЙДЕНЫ!" @echo "========================================" # ============================================================================ # LOAD TESTING # ============================================================================ -tsung-test: ## ????????? ??????????? ???? Tsung - @echo "?????? ???????????? ????? Tsung..." +tsung-test: ## Запустить нагрузочный тест Tsung + @echo "Запуск нагрузочного теста Tsung..." @mkdir -p logs/tsung @tsung -f test/tsung/eventhub_http.xml -l logs/tsung start - @echo "?????: logs/tsung/*/report.html" + @echo "Отчёт: logs/tsung/*/report.html" -tsung-emulate: ## ????????? ??????????? ???? Tsung +tsung-emulate: ## Запустить нагрузочный тест Tsung @rm -rf logs/tsung - @echo "?????? ???????????? ????? Tsung..." + @echo "Запуск нагрузочного теста Tsung..." @mkdir -p logs/tsung @tsung -f test/tsung/eventhub_tsung.xml -l logs/tsung start - @echo "?????: http://localhost:8091/ ??? logs/tsung/*/report.html" # + @echo "Отчёт: http://localhost:8091/ или logs/tsung/*/report.html" # -wrk-register: ## ??????????? ???? ??????????? (wrk2) +wrk-register: ## Нагрузочный тест регистрации (wrk2) @wrk -t4 -c100 -d30s -t100 -s test/wrk/scripts/wrk_register.lua https://api.stage.eventhub.local/api/v1/register -wrk-search: ## ??????????? ???? ?????? (wrk2) +wrk-search: ## Нагрузочный тест поиска (wrk2) @TOKEN=$$(curl -s -X POST https://api.stage.eventhub.local/api/v1/register \ -H "Content-Type: application/json" \ -d '{"email":"wrktest@test.com","password":"pass"}' | \ @@ -181,7 +181,7 @@ eventhub-emulator: curl-health: for i in {1..2}; do curl -k -s -o /dev/null -w "%{http_code}\n" -H "Host: api.stage.eventhub.local" https://localhost/api/health; done -wrk-health: ## ??????????? ???? health (wrk2) +wrk-health: ## Нагрузочный тест health (wrk2) wrk -t4 -c100 -d30s -t100 \ -H "Host: api.stage.eventhub.local" \ https://api.stage.eventhub.local/api/health @@ -189,51 +189,51 @@ wrk-health: ## ??????????? ???? health (wrk2) # ============================================================================ # CODE QUALITY # ============================================================================ -dialyzer: ## ????????? Dialyzer (??????????? ??????) - @echo "?????? Dialyzer..." +dialyzer: ## Запустить Dialyzer (статический анализ) + @echo "Запуск Dialyzer..." @$(REBAR3) dialyzer - @echo "? Dialyzer ????????" + @echo "✓ Dialyzer завершён" -xref: ## ????????? Xref (?????-??????) - @echo "?????? Xref..." +xref: ## Запустить Xref (кросс-ссылки) + @echo "Запуск Xref..." @$(REBAR3) xref - @echo "? Xref ????????" + @echo "✓ Xref завершён" -cover: ## ????????? ????? ? ????????? ???? - @echo "?????? ?????? ? ?????????..." +cover: ## Запустить тесты с покрытием кода + @echo "Запуск тестов с покрытием..." @$(REBAR3) eunit --sname $(SNAME)_test --cover @$(REBAR3) cover --verbose - @echo "? ????? ? ???????? ? _build/test/cover/" + @echo "✓ Отчёт о покрытии в _build/test/cover/" -docs: ## ????????????? ???????????? (EDoc) - @echo "????????? ????????????..." +docs: ## Сгенерировать документацию (EDoc) + @echo "Генерация документации..." @$(REBAR3) edoc - @echo "? ???????????? ? doc/" + @echo "✓ Документация в doc/" # ============================================================================ # RELEASE & DOCKER # ============================================================================ -release: ## ??????? ????? - @echo "?????? ??????..." +release: ## Собрать релиз + @echo "Сборка релиза..." @$(REBAR3) as prod release - @echo "? ????? ?????? ? _build/prod/rel/eventhub/" + @echo "✓ Релиз собран в _build/prod/rel/eventhub/" # ============================================================================ # DOCKER # ============================================================================ -docker-build: ## ??????? Docker ????? - @echo "?????? Docker ??????..." +docker-build: ## Собрать Docker образ + @echo "Сборка Docker образа..." @docker build -f docker/Dockerfile -t eventhub:latest . - @echo "? Docker ????? ??????" + @echo "✅ Docker образ собран" -docker-build-debug: ## ??????? Docker ????? - @echo "?????? Docker ??????..." +docker-build-debug: ## Собрать Docker образ + @echo "Сборка Docker образа..." @docker build -f docker/Debug.Dockerfile -t eventhub-debug:latest . - @echo "? Docker ????? ??????" + @echo "✅ Docker образ собран" -docker-run: ## ????????? Docker ????????? (?????????) - @echo "?????? Docker ??????????..." +docker-run: ## Запустить Docker контейнер (одиночный) + @echo "Запуск Docker контейнера..." @docker run -d \ --hostname eventhub.local \ --env-file docker/.env \ @@ -245,29 +245,29 @@ docker-run: ## ????????? Docker ????????? (?????????) -p 8446:8446 \ -v eventhub-data:/app/data \ eventhub:latest - @echo "? ????????? ??????? ?? http://localhost:8080" + @echo "✅ Контейнер запущен на http://localhost:8080" -docker-stop: ## ?????????? Docker ????????? - @echo "????????? Docker ??????????..." +docker-stop: ## Остановить Docker контейнер + @echo "Остановка Docker контейнера..." @docker stop eventhub 2>/dev/null || true @docker rm eventhub 2>/dev/null || true - @echo "? ????????? ??????????" + @echo "✅ Контейнер остановлен" -docker-logs: ## ???????? ???? Docker ?????????? +docker-logs: ## Показать логи Docker контейнера @docker logs -f eventhub -docker-shell: ## ????? ? Docker ????????? +docker-shell: ## Зайти в Docker контейнер @docker exec -it eventhub sh -docker-compose-build-app: ## ??????? Docker ????? - @echo "?????? Docker ??????..." +docker-compose-build-app: ## Собрать Docker образ + @echo "Сборка Docker образа..." @docker-compose -f docker/docker-compose.yml build --no-cache eventhub-node1 eventhub-node2 eventhub-node3 - @echo "? Docker ????? ??????" + @echo "✅ Docker образ собран" -docker-compose-up: ## ????????? ??????? (3 ????) - @echo "?????? ???????? EventHub (3 ????)..." +docker-compose-up: ## Запустить кластер (3 ноды) + @echo "Запуск кластера EventHub (3 ноды)..." @docker-compose -f docker/docker-compose.yml --env-file docker/.env up -d - @echo "? ??????? ???????" + @echo "✅ Кластер запущен" @echo "Node 1: http://localhost:8080" @echo "Node 2: http://localhost:8082" @echo "Node 3: http://localhost:8084" @@ -278,20 +278,20 @@ docker-compose-up: ## ????????? ??????? (3 ????) @echo "LogLynx: http://localhost:6123" @echo "Swagger UI: http://localhost:8447" -docker-compose-down: ## ?????????? ??????? - @echo "????????? ????????..." +docker-compose-down: ## Остановить кластер + @echo "Остановка кластера..." @docker-compose -f docker/docker-compose.yml --env-file docker/.env down - @echo "? ??????? ??????????" + @echo "✅ Кластер остановлен" -docker-compose-logs: ## ???????? ???? ???????? +docker-compose-logs: ## Показать логи кластера @docker-compose -f docker/docker-compose.yml --env-file docker/.env logs -f -docker-clean: docker-stop ## ???????? Docker ?????? ? volumes +docker-clean: docker-stop ## Очистить Docker образы и volumes @docker rmi eventhub:latest 2>/dev/null || true @docker volume rm eventhub-data 2>/dev/null || true - @echo "? Docker ??????" + @echo "✅ Docker очищен" -docker-swarm-deploy: ## ????????? ??????? +docker-swarm-deploy: ## Запустить кластер @set RELEASE_COOKIE=$$(grep RELEASE_COOKIE docker/.env | cut -d '=' -f2) @set JWT_SECRET=$$(grep JWT_SECRET docker/.env | cut -d '=' -f2) @docker stack deploy -c docker/docker-compose.swarm.yml eventhub --detach=true @@ -299,25 +299,25 @@ docker-swarm-deploy: ## ????????? ??????? @bash ../EventHubDevOps/scripts/docker-container-prune-now.sh 2>/dev/null || true @bash ../EventHubDevOps/scripts/setup-docker-image-prune.sh 2>/dev/null || true @bash ../EventHubDevOps/scripts/docker-image-prune-now.sh 2>/dev/null || true - @echo "? ??????? ???????" + @echo "✅ Кластер запущен" @echo "Admin UI: https://admin-ui.stage.eventhub.local" -docker-swarm-stop: ## ?????????? ??????? +docker-swarm-stop: ## Остановить кластер @docker stack rm eventhub ##@docker volume prune -f - @echo "? ??????? ??????" + @echo "✅ Кластер удален" -docker-swarm-scale: ## ???????? ?????????? ?????? (????????, make scale REPLICAS=5) - @echo "??????????????? ?? ${REPLICAS} ??????..." +docker-swarm-scale: ## Изменить количество реплик (например, make scale REPLICAS=5) + @echo "Масштабирование до ${REPLICAS} реплик..." docker service scale eventhub_eventhub=${REPLICAS} - @echo "? ?????? ?????????????" + @echo "✅ Сервис масштабирован" -docker-swarm-status: ## ???????? ????????? ???????? - @echo "?????????? ????? ? ????????:" +docker-swarm-status: ## Показать состояние кластера + @echo "Количество узлов в кластере:" @docker exec $$(docker ps -qf "name=eventhub_eventhub" | head -n 1) /app/bin/eventhub eval 'length(nodes()).' - @echo "?????? ?????:" + @echo "Список узлов:" @docker exec $$(docker ps -qf "name=eventhub_eventhub" | head -n 1) /app/bin/eventhub eval 'nodes().' - @echo "?????? ????? Mnesia:" + @echo "Список узлов Mnesia:" @docker exec $$(docker ps -qf "name=eventhub_eventhub" | head -n 1) /app/bin/eventhub eval 'mnesia:table_info(user, disc_copies).' docker-swarm-reg-admin: @@ -348,56 +348,56 @@ docker-swarm-shell: # ============================================================================ # UTILITIES # ============================================================================ -status: ## ????????? ?????? ??????? - @echo "???????? ??????? ???????..." +status: ## Проверить статус сервера + @echo "Проверка статуса сервера..." @if curl -s http://localhost:8080/health > /dev/null 2>&1; then \ - echo "? ?????? ??????? ?? http://localhost:8080"; \ + echo "✓ Сервер запущен на http://localhost:8080"; \ curl -s http://localhost:8080/health; \ else \ - echo "? ?????? ?? ???????"; \ + echo "✗ Сервер не запущен"; \ fi -tree: ## ???????? ????????? ??????? +tree: ## Показать структуру проекта @tree -I '_build|deps|logs|.git' --dirsfirst 2>/dev/null || ls -la -info: ## ???????? ?????????? ? ??????? - @echo "EventHub - ?????????? ? ???????:" +info: ## Показать информацию о проекте + @echo "EventHub - информация о проекте:" @echo "" - @echo "API ?????????:" - @echo " POST /v1/register - ???????????" - @echo " POST /v1/login - ?????" - @echo " POST /v1/refresh - ?????????? ??????" - @echo " GET /v1/user/me - ???????" - @echo " POST /v1/calendars - ???????? ?????????" - @echo " GET /v1/calendars - ?????? ??????????" - @echo " POST /v1/calendars/:id/events - ???????? ???????" - @echo " POST /v1/events/:id/bookings - ?????? ?? ???????" + @echo "API эндпоинты:" + @echo " POST /v1/register - Регистрация" + @echo " POST /v1/login - Логин" + @echo " POST /v1/refresh - Обновление токена" + @echo " GET /v1/user/me - Профиль" + @echo " POST /v1/calendars - Создание календаря" + @echo " GET /v1/calendars - Список календарей" + @echo " POST /v1/calendars/:id/events - Создание события" + @echo " POST /v1/events/:id/bookings - Запись на событие" @echo "" - @echo "?????:" + @echo "Порты:" @echo " HTTP API: 8080" @echo " Admin HTTP: 8445" # ============================================================================ # DEVELOPMENT WORKFLOW # ============================================================================ -dev-setup: deps compile ## ????????? ????????? ??? ?????????? - @echo "? ????????? ?????????" +dev-setup: deps compile ## Настроить окружение для разработки + @echo "✓ Окружение настроено" -dev-test: ## ??????? ????: compile + eunit +dev-test: ## Быстрый цикл: compile + eunit @make compile @make eunit # ============================================================================ # GIT HELPERS # ============================================================================ -git-status: ## ???????? ?????? Git +git-status: ## Показать статус Git @git status --short -git-log: ## ???????? ??? Git (????????? 10) +git-log: ## Показать лог Git (последние 10) @git log --oneline -10 -git-save: ## ????????? ????????? (commit + push) - @read -p "????????? ???????: " msg; \ +git-save: ## Сохранить изменения (commit + push) + @read -p "Сообщение коммита: " msg; \ git add .; \ git commit -m "$$msg"; \ git push