forked from hookdeck/outpost
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
173 lines (134 loc) · 4.92 KB
/
Makefile
File metadata and controls
173 lines (134 loc) · 4.92 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
TEST?=./...
RUN?=
# Build targets
.PHONY: build
build:
@echo "Checking formatting..."
@if [ -n "$$(gofmt -l .)" ]; then \
echo "Formatting issues found in:"; \
gofmt -l .; \
echo "Run 'gofmt -w .' to fix"; \
exit 1; \
fi
@echo "Building all binaries..."
go build -o bin/outpost ./cmd/outpost
go build -o bin/outpost-server ./cmd/outpost-server
go build -o bin/outpost-migrate-redis ./cmd/outpost-migrate-redis
@echo "Binaries built in ./bin/"
build/goreleaser:
goreleaser release -f ./build/.goreleaser.yaml --snapshot --clean
build/outpost:
go build -o bin/outpost ./cmd/outpost
build/server:
go build -o bin/outpost-server ./cmd/outpost-server
build/migrate-redis:
go build -o bin/outpost-migrate-redis ./cmd/outpost-migrate-redis
install:
@echo "Installing binaries to GOPATH/bin..."
go install ./cmd/outpost
go install ./cmd/outpost-server
go install ./cmd/outpost-migrate-redis
@echo "Installation complete"
clean:
rm -f bin/outpost bin/outpost-server bin/outpost-migrate-redis
up:
make up/deps
make up/outpost
down:
make down/outpost
make down/deps
up/outpost:
docker-compose -f build/dev/compose.yml --env-file .env up -d
down/outpost:
docker-compose -f build/dev/compose.yml --env-file .env down
up/deps:
COMPOSE_PROFILES=$$(./build/dev/deps/profiles.sh) docker-compose --env-file .env -f build/dev/deps/compose.yml -f build/dev/deps/compose-gui.yml up -d
down/deps:
COMPOSE_PROFILES=$$(./build/dev/deps/profiles.sh --all) docker-compose -f build/dev/deps/compose.yml -f build/dev/deps/compose-gui.yml down
up/mqs:
docker-compose -f build/dev/mqs/compose.yml up -d
down/mqs:
docker-compose -f build/dev/mqs/compose.yml down
up/grafana:
docker-compose -f build/dev/grafana/compose.yml up -d
down/grafana:
docker-compose -f build/dev/grafana/compose.yml down
up/uptrace:
docker-compose -f build/dev/uptrace/compose.yml up -d
down/uptrace:
docker-compose -f build/dev/uptrace/compose.yml down
up/portal:
cd internal/portal && npm install && npm run dev
up/azure:
docker-compose -f build/dev/azure/compose.yml up -d
down/azure:
docker-compose -f build/dev/azure/compose.yml down --volumes
up/test:
docker-compose -f build/test/compose.yml up -d
down/test:
docker-compose -f build/test/compose.yml down --volumes
up/test/rediscluster:
@echo "Ensuring test network exists..."
@docker network create outpost-test_default 2>/dev/null || true
@UNAME_S=$$(uname -s); \
if [ "$$UNAME_S" = "Darwin" ]; then \
REDIS_IMAGE=neohq/redis-cluster:latest; \
echo "Detected macOS, using neohq/redis-cluster image..."; \
else \
REDIS_IMAGE=grokzen/redis-cluster:7.2.4; \
echo "Using grokzen/redis-cluster image..."; \
fi; \
REDIS_IMAGE=$$REDIS_IMAGE docker-compose -f build/test/redis-cluster-compose.yml up -d
@echo "Starting Redis cluster and test runner containers..."
@echo " - Redis cluster: 6 nodes (3 masters + 3 replicas)"
@echo " - Test runner: Alpine container with Go code mounted"
@echo ""
@echo "Waiting for cluster to initialize..."
@sleep 10
@echo "Checking Redis cluster status:"
@docker exec redis-cluster redis-cli -p 7000 cluster info | grep cluster_state || echo "Failed to check cluster status"
@echo ""
@echo "Test environment ready. Run: make test/e2e/rediscluster"
down/test/rediscluster:
@echo "Stopping Redis cluster test environment..."
@docker-compose -f build/test/redis-cluster-compose.yml down --volumes
@echo "Redis cluster test environment stopped."
test/setup:
@echo "To setup the test environment, run the following command:"
@echo "$$ go install gotest.tools/gotestsum@latest"
@echo "$$ make up/test"
@echo "$$ make up/azure"
@echo ""
@echo "Before running the tests, make sure to:"
@echo "$$ export TESTINFRA=1 TESTAZURE=1"
@echo ""
test:
TEST="$(TEST)" RUN="$(RUN)" TESTARGS="$(TESTARGS)" ./scripts/test.sh test
test/unit:
TEST="$(TEST)" RUN="$(RUN)" TESTARGS="$(TESTARGS)" ./scripts/test.sh unit
test/e2e:
RUN="$(RUN)" TESTARGS="$(TESTARGS)" ./scripts/test.sh e2e
test/full:
TEST="$(TEST)" RUN="$(RUN)" TESTARGS="$(TESTARGS)" ./scripts/test.sh full
test/e2e/rediscluster:
@echo "Running Redis cluster e2e tests in Docker container..."
@if ! docker ps | grep -q test-runner; then \
echo "Error: test-runner container not running. Run 'make up/test/rediscluster' first."; \
exit 1; \
fi
@docker exec test-runner sh -c "cd /app && go test ./cmd/e2e -v -run TestRedisClusterBasicSuite"
@echo "Redis cluster e2e tests completed."
test/race:
TESTRACE=1 gotestsum --hide-summary=skipped --format-hide-empty-pkg --packages="$(TEST)" -- $(TESTARGS) -race
test/coverage:
gotestsum --hide-summary=skipped --format-hide-empty-pkg --packages="$(TEST)" -- $(TESTARGS) -coverprofile=coverage.out
test/coverage/html:
go tool cover -html=coverage.out
docs/generate/config:
go run cmd/configdocsgen/main.go
redis/debug:
go run cmd/redis-debug/main.go $(ARGS)
network:
docker network create outpost
logs:
docker logs $$(docker ps -f name=outpost-${SERVICE} --format "{{.ID}}") -f $(ARGS)