Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

Makefile 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. # Variables
  2. DOCKER_REGISTRY=langgenius
  3. WEB_IMAGE=$(DOCKER_REGISTRY)/dify-web
  4. API_IMAGE=$(DOCKER_REGISTRY)/dify-api
  5. VERSION=latest
  6. # Default target - show help
  7. .DEFAULT_GOAL := help
  8. # Backend Development Environment Setup
  9. .PHONY: dev-setup prepare-docker prepare-web prepare-api
  10. # Dev setup target
  11. dev-setup: prepare-docker prepare-web prepare-api
  12. @echo "✅ Backend development environment setup complete!"
  13. # Step 1: Prepare Docker middleware
  14. prepare-docker:
  15. @echo "🐳 Setting up Docker middleware..."
  16. @cp -n docker/middleware.env.example docker/middleware.env 2>/dev/null || echo "Docker middleware.env already exists"
  17. @cd docker && docker compose -f docker-compose.middleware.yaml --env-file middleware.env -p dify-middlewares-dev up -d
  18. @echo "✅ Docker middleware started"
  19. # Step 2: Prepare web environment
  20. prepare-web:
  21. @echo "🌐 Setting up web environment..."
  22. @cp -n web/.env.example web/.env 2>/dev/null || echo "Web .env already exists"
  23. @cd web && pnpm install
  24. @cd web && pnpm build
  25. @echo "✅ Web environment prepared (not started)"
  26. # Step 3: Prepare API environment
  27. prepare-api:
  28. @echo "🔧 Setting up API environment..."
  29. @cp -n api/.env.example api/.env 2>/dev/null || echo "API .env already exists"
  30. @cd api && uv sync --dev
  31. @cd api && uv run flask db upgrade
  32. @echo "✅ API environment prepared (not started)"
  33. # Clean dev environment
  34. dev-clean:
  35. @echo "⚠️ Stopping Docker containers..."
  36. @cd docker && docker compose -f docker-compose.middleware.yaml --env-file middleware.env -p dify-middlewares-dev down
  37. @echo "🗑️ Removing volumes..."
  38. @rm -rf docker/volumes/db
  39. @rm -rf docker/volumes/redis
  40. @rm -rf docker/volumes/plugin_daemon
  41. @rm -rf docker/volumes/weaviate
  42. @rm -rf api/storage
  43. @echo "✅ Cleanup complete"
  44. # Backend Code Quality Commands
  45. format:
  46. @echo "🎨 Running ruff format..."
  47. @uv run --project api --dev ruff format ./api
  48. @echo "✅ Code formatting complete"
  49. check:
  50. @echo "🔍 Running ruff check..."
  51. @uv run --project api --dev ruff check ./api
  52. @echo "✅ Code check complete"
  53. lint:
  54. @echo "🔧 Running ruff format, check with fixes, and import linter..."
  55. @uv run --project api --dev sh -c 'ruff format ./api && ruff check --fix ./api'
  56. @uv run --directory api --dev lint-imports
  57. @echo "✅ Linting complete"
  58. type-check:
  59. @echo "📝 Running type check with basedpyright..."
  60. @uv run --directory api --dev basedpyright
  61. @echo "✅ Type check complete"
  62. # Build Docker images
  63. build-web:
  64. @echo "Building web Docker image: $(WEB_IMAGE):$(VERSION)..."
  65. docker build -t $(WEB_IMAGE):$(VERSION) ./web
  66. @echo "Web Docker image built successfully: $(WEB_IMAGE):$(VERSION)"
  67. build-api:
  68. @echo "Building API Docker image: $(API_IMAGE):$(VERSION)..."
  69. docker build -t $(API_IMAGE):$(VERSION) ./api
  70. @echo "API Docker image built successfully: $(API_IMAGE):$(VERSION)"
  71. # Push Docker images
  72. push-web:
  73. @echo "Pushing web Docker image: $(WEB_IMAGE):$(VERSION)..."
  74. docker push $(WEB_IMAGE):$(VERSION)
  75. @echo "Web Docker image pushed successfully: $(WEB_IMAGE):$(VERSION)"
  76. push-api:
  77. @echo "Pushing API Docker image: $(API_IMAGE):$(VERSION)..."
  78. docker push $(API_IMAGE):$(VERSION)
  79. @echo "API Docker image pushed successfully: $(API_IMAGE):$(VERSION)"
  80. # Build all images
  81. build-all: build-web build-api
  82. # Push all images
  83. push-all: push-web push-api
  84. build-push-api: build-api push-api
  85. build-push-web: build-web push-web
  86. # Build and push all images
  87. build-push-all: build-all push-all
  88. @echo "All Docker images have been built and pushed."
  89. # Help target
  90. help:
  91. @echo "Development Setup Targets:"
  92. @echo " make dev-setup - Run all setup steps for backend dev environment"
  93. @echo " make prepare-docker - Set up Docker middleware"
  94. @echo " make prepare-web - Set up web environment"
  95. @echo " make prepare-api - Set up API environment"
  96. @echo " make dev-clean - Stop Docker middleware containers"
  97. @echo ""
  98. @echo "Backend Code Quality:"
  99. @echo " make format - Format code with ruff"
  100. @echo " make check - Check code with ruff"
  101. @echo " make lint - Format and fix code with ruff"
  102. @echo " make type-check - Run type checking with basedpyright"
  103. @echo ""
  104. @echo "Docker Build Targets:"
  105. @echo " make build-web - Build web Docker image"
  106. @echo " make build-api - Build API Docker image"
  107. @echo " make build-all - Build all Docker images"
  108. @echo " make push-all - Push all Docker images"
  109. @echo " make build-push-all - Build and push all Docker images"
  110. # Phony targets
  111. .PHONY: build-web build-api push-web push-api build-all push-all build-push-all dev-setup prepare-docker prepare-web prepare-api dev-clean help format check lint type-check