프로젝트 관리 Makefile

빌드, 테스트, 포맷팅, 배포 등 공통 프로젝트 작업을 자동화하기 위한 Makefile 템플릿입니다.

Gist
# 변수 설정
APP_NAME := my-app
BUILD_DIR := ./dist
PYTHON := python3
DOCKER_IMAGE := $(APP_NAME):latest

# 기본 타겟
.DEFAULT_GOAL := help

.PHONY: help
help: ## 도움말 표시
	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'

.PHONY: setup
setup: ## 프로젝트 초기 설정 및 의존성 설치
	$(PYTHON) -m pip install -r requirements.txt

.PHONY: clean
clean: ## 빌드 아티팩트 및 캐시 삭제
	rm -rf $(BUILD_DIR)
	find . -type d -name "__pycache__" -exec rm -rf {} +
	find . -type f -name "*.pyc" -delete

.PHONY: format
format: ## 코드 포맷팅 (black, isort)
	black .
	isort .

.PHONY: lint
lint: ## 코드 정적 분석 (flake8, mypy)
	flake8 .
	mypy .

.PHONY: test
test: ## 테스트 실행
	pytest tests/

.PHONY: build
build: clean ## 프로젝트 빌드
	mkdir -p $(BUILD_DIR)
	# 빌드 명령어 예시 (예: 파이썬 패키징 또는 컴파일)
	# $(PYTHON) -m build --outdir $(BUILD_DIR)

.PHONY: docker-build
docker-build: ## 도커 이미지 빌드
	docker build -t $(DOCKER_IMAGE) .

.PHONY: run
run: ## 로컬에서 애플리케이션 실행
	$(PYTHON) src/main.py

.PHONY: all
all: format lint test build ## 전체 파이프라인 실행 (포맷팅 -> 린트 -> 테스트 -> 빌드)