-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
188 lines (159 loc) · 5.31 KB
/
Copy pathMakefile
File metadata and controls
188 lines (159 loc) · 5.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
.PHONY: help proto clean build run test docker
# Default target
help:
@echo "Available targets:"
@echo " proto - Generate protobuf files"
@echo " build - Build all services"
@echo " build-user - Build user service"
@echo " build-auth - Build auth service"
@echo " run-user - Run user service"
@echo " run-auth - Run auth service"
@echo " test - Run tests"
@echo " clean - Clean build artifacts"
@echo " deps - Download dependencies"
@echo ""
@echo "Docker commands:"
@echo " docker-build - Build Docker images"
@echo " docker-up - Start all services with Docker"
@echo " docker-up-user - Start user service with dependencies"
@echo " docker-down - Stop all Docker services"
@echo " docker-logs - Show logs from all services"
@echo " docker-migrate - Run database migrations"
@echo " docker-clean - Clean Docker images and volumes"
@echo " dev-up - Start full development environment"
@echo " dev-down - Stop development environment"
# Generate protobuf files
proto:
@echo "Generating protobuf files..."
protoc --proto_path=proto --go_out=proto --go_opt=paths=source_relative \
common/v1/common.proto
protoc --proto_path=proto --go_out=proto --go_opt=paths=source_relative \
--go-grpc_out=proto --go-grpc_opt=paths=source_relative \
user/v1/user.proto \
auth/v1/auth.proto \
chat/v1/chat.proto \
subscriber/v1/subscriber.proto
# Build all services
build: build-user build-auth build-chat build-subscriber build-gateway
# Build user service
build-user:
@echo "Building user service..."
cd services/user && go build -o user-service ./cmd
# Build auth service
build-auth:
@echo "Building auth service..."
cd services/auth && go build -o auth-service ./cmd
# Build chat service
build-chat:
@echo "Building chat service..."
cd services/chat && go build -o chat-service ./cmd
# Build subscriber service
build-subscriber:
@echo "Building subscriber service..."
cd services/subscriber && go build -o subscriber-service ./cmd
# Build gateway service
build-gateway:
@echo "Building gateway service..."
cd services/gateway && go build -o gateway ./cmd
# Run user service
run-user:
@echo "Running user service..."
cd services/user && ./user-service
# Run auth service
run-auth:
@echo "Running auth service..."
cd services/auth && ./auth-service
# Download dependencies
deps:
@echo "Downloading dependencies..."
go mod download
cd services/user && go mod tidy
cd services/auth && go mod tidy
cd services/chat && go mod tidy
cd services/subscriber && go mod tidy
cd services/gateway && go mod tidy
# Run tests
test:
@echo "Running tests..."
go test ./...
cd services/user && go test ./...
cd services/auth && go test ./...
cd services/chat && go test ./...
cd services/subscriber && go test ./...
cd services/gateway && go test ./...
# Clean build artifacts
clean:
@echo "Cleaning build artifacts..."
rm -f services/user/user-service
rm -f services/auth/auth-service
rm -f services/chat/chat-service
rm -f services/subscriber/subscriber-service
rm -f services/gateway/gateway
find . -name "*.pb.go" -not -path "./proto/*" -delete
# Setup development environment
setup:
@echo "Setting up development environment..."
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
# Docker commands
docker-build:
@echo "Building Docker images..."
docker-compose build
docker-up:
@echo "Starting all services..."
docker-compose up -d postgres redis
@echo "Waiting for databases to be ready..."
sleep 10
docker-compose --profile migrate up migrate
docker-compose up -d user-service
docker-up-user:
@echo "Starting user service with dependencies..."
docker-compose up -d postgres redis
@echo "Waiting for databases to be ready..."
sleep 10
docker-compose --profile migrate up migrate
docker-compose up user-service
docker-down:
@echo "Stopping all services..."
docker-compose down
docker-logs:
@echo "Showing logs from all services..."
docker-compose logs -f
docker-migrate:
@echo "Running database migrations..."
docker-compose --profile migrate up migrate
docker-clean:
@echo "Cleaning Docker images and volumes..."
docker-compose down -v
docker system prune -f
# Development environment commands
dev-up:
@echo "Starting full development environment..."
docker-compose -f docker-compose.dev.yml up -d postgres redis
@echo "Waiting for databases to be ready..."
sleep 10
docker-compose -f docker-compose.dev.yml up migrate
docker-compose -f docker-compose.dev.yml up -d
dev-down:
@echo "Stopping development environment..."
docker-compose -f docker-compose.dev.yml down
dev-logs:
@echo "Showing development environment logs..."
docker-compose -f docker-compose.dev.yml logs -f
dev-build:
@echo "Building development environment..."
docker-compose -f docker-compose.dev.yml build
# Development shortcuts
dev-user: docker-up-user
@echo "User service development environment started!"
@echo "gRPC: localhost:50002"
@echo "HTTP: localhost:8002"
@echo "Health: curl http://localhost:8002/health"
dev-stop: docker-down
# Database management
db-connect:
@echo "Connecting to PostgreSQL..."
docker exec -it messenger-postgres psql -U postgres -d messenger_user
redis-connect:
@echo "Connecting to Redis..."
docker exec -it messenger-redis redis-cli