103 lines
3.5 KiB
Makefile
103 lines
3.5 KiB
Makefile
.PHONY: help build run test clean docker-build docker-run docker-stop install-deps
|
||
|
||
# Переменные
|
||
BINARY_NAME=go-webhook-server
|
||
DOCKER_IMAGE=go-webhook-server
|
||
DOCKER_CONTAINER=go-webhook-server
|
||
|
||
# Помощь
|
||
help: ## Показать справку по командам
|
||
@echo "Доступные команды:"
|
||
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
|
||
|
||
# Установка зависимостей
|
||
install-deps: ## Установить Go зависимости
|
||
go mod download
|
||
go mod tidy
|
||
|
||
# Сборка
|
||
build: install-deps ## Собрать бинарный файл
|
||
@echo "Сборка $(BINARY_NAME)..."
|
||
go build -o $(BINARY_NAME) main.go
|
||
@echo "Сборка завершена: $(BINARY_NAME)"
|
||
|
||
# Запуск
|
||
run: build ## Запустить сервис локально
|
||
@echo "Запуск $(BINARY_NAME)..."
|
||
./$(BINARY_NAME)
|
||
|
||
# Тестирование
|
||
test: install-deps ## Запустить тесты
|
||
@echo "Запуск тестов..."
|
||
go test -v ./...
|
||
|
||
# Очистка
|
||
clean: ## Очистить собранные файлы
|
||
@echo "Очистка..."
|
||
rm -f $(BINARY_NAME)
|
||
@echo "Очистка завершена"
|
||
|
||
# Docker команды
|
||
docker-build: ## Собрать Docker образ
|
||
@echo "Сборка Docker образа..."
|
||
docker build -t $(DOCKER_IMAGE) .
|
||
@echo "Docker образ собран: $(DOCKER_IMAGE)"
|
||
|
||
docker-run: docker-build ## Запустить Docker контейнер
|
||
@echo "Запуск Docker контейнера..."
|
||
docker run -d \
|
||
--name $(DOCKER_CONTAINER) \
|
||
-p 3000:3000 \
|
||
-v obsidian_repo:/obsidian:ro \
|
||
-v quartz_repo:/quartz:ro \
|
||
-v public_site:/public \
|
||
$(DOCKER_IMAGE)
|
||
@echo "Docker контейнер запущен: $(DOCKER_CONTAINER)"
|
||
|
||
docker-stop: ## Остановить Docker контейнер
|
||
@echo "Остановка Docker контейнера..."
|
||
docker stop $(DOCKER_CONTAINER) || true
|
||
docker rm $(DOCKER_CONTAINER) || true
|
||
@echo "Docker контейнер остановлен"
|
||
|
||
docker-logs: ## Показать логи Docker контейнера
|
||
docker logs -f $(DOCKER_CONTAINER)
|
||
|
||
# Docker Compose команды
|
||
compose-up: ## Запустить сервис через Docker Compose
|
||
@echo "Запуск через Docker Compose..."
|
||
docker-compose up -d
|
||
@echo "Сервис запущен"
|
||
|
||
compose-down: ## Остановить сервис через Docker Compose
|
||
@echo "Остановка через Docker Compose..."
|
||
docker-compose down
|
||
@echo "Сервис остановлен"
|
||
|
||
compose-logs: ## Показать логи Docker Compose
|
||
docker-compose logs -f
|
||
|
||
# Проверка состояния
|
||
status: ## Показать статус сервиса
|
||
@echo "Проверка статуса сервиса..."
|
||
@curl -s http://localhost:3000/health || echo "Сервис недоступен"
|
||
|
||
# Webhook тест
|
||
test-webhook: ## Отправить тестовый webhook
|
||
@echo "Отправка тестового webhook..."
|
||
@curl -X POST http://localhost:3000/webhook
|
||
@echo ""
|
||
|
||
# Полная пересборка
|
||
rebuild: clean build ## Полная пересборка проекта
|
||
|
||
# Разработка
|
||
dev: ## Запуск в режиме разработки с автоперезагрузкой
|
||
@echo "Запуск в режиме разработки..."
|
||
@if command -v air > /dev/null; then \
|
||
air; \
|
||
else \
|
||
echo "Air не установлен. Установите: go install github.com/cosmtrek/air@latest"; \
|
||
go run main.go; \
|
||
fi
|