-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathMakefile
More file actions
94 lines (83 loc) · 2.92 KB
/
Makefile
File metadata and controls
94 lines (83 loc) · 2.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
BASE_PATH=github.com/streamnative/streamnative-mcp-server
VERSION_PATH=main
GIT_VERSION=$(shell git describe --tags --abbrev=0)-SNAPSHOT-$(shell git rev-parse --short HEAD)
GIT_COMMIT=$(shell git rev-parse HEAD)
BUILD_DATE=$(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
MKDIR_P = mkdir -p
# Docker configuration
DOCKER_REGISTRY ?= docker.io
DOCKER_IMAGE ?= streamnative/mcp-server
DOCKER_IMAGE_LEGACY ?= streamnative/snmcp
DOCKER_TAG ?= $(GIT_VERSION)
DOCKER_PLATFORMS ?= linux/amd64,linux/arm64
export GOPRIVATE=github.com/streamnative
.PHONY: all
all: build ;
.PHONY: build
build:
${MKDIR_P} bin/
CGO_ENABLED=0 go build -ldflags "\
-X ${VERSION_PATH}.version=${GIT_VERSION} \
-X ${VERSION_PATH}.commit=${GIT_COMMIT} \
-X ${VERSION_PATH}.date=${BUILD_DATE}" \
-o bin/snmcp cmd/streamnative-mcp-server/main.go
# Build Docker image for local platform with both names
.PHONY: docker-build
docker-build:
docker build \
--build-arg VERSION=$(GIT_VERSION) \
--build-arg COMMIT=$(GIT_COMMIT) \
--build-arg BUILD_DATE=$(BUILD_DATE) \
-t $(DOCKER_REGISTRY)/$(DOCKER_IMAGE):$(DOCKER_TAG) \
-t $(DOCKER_REGISTRY)/$(DOCKER_IMAGE):latest \
-t $(DOCKER_REGISTRY)/$(DOCKER_IMAGE_LEGACY):$(DOCKER_TAG) \
-t $(DOCKER_REGISTRY)/$(DOCKER_IMAGE_LEGACY):latest \
.
# Build multi-platform Docker image and push to registry with both names
.PHONY: docker-build-push
docker-build-push: docker-buildx-setup
docker buildx build \
--platform $(DOCKER_PLATFORMS) \
--build-arg VERSION=$(GIT_VERSION) \
--build-arg COMMIT=$(GIT_COMMIT) \
--build-arg BUILD_DATE=$(BUILD_DATE) \
-t $(DOCKER_REGISTRY)/$(DOCKER_IMAGE):$(DOCKER_TAG) \
-t $(DOCKER_REGISTRY)/$(DOCKER_IMAGE):latest \
-t $(DOCKER_REGISTRY)/$(DOCKER_IMAGE_LEGACY):$(DOCKER_TAG) \
-t $(DOCKER_REGISTRY)/$(DOCKER_IMAGE_LEGACY):latest \
--push \
.
# Build multi-platform Docker image without pushing (for testing) with both names
.PHONY: docker-build-multiplatform
docker-build-multiplatform: docker-buildx-setup
docker buildx build \
--platform $(DOCKER_PLATFORMS) \
--build-arg VERSION=$(GIT_VERSION) \
--build-arg COMMIT=$(GIT_COMMIT) \
--build-arg BUILD_DATE=$(BUILD_DATE) \
-t $(DOCKER_REGISTRY)/$(DOCKER_IMAGE):$(DOCKER_TAG) \
-t $(DOCKER_REGISTRY)/$(DOCKER_IMAGE):latest \
-t $(DOCKER_REGISTRY)/$(DOCKER_IMAGE_LEGACY):$(DOCKER_TAG) \
-t $(DOCKER_REGISTRY)/$(DOCKER_IMAGE_LEGACY):latest \
--load \
.
# Setup Docker buildx for multi-platform builds
.PHONY: docker-buildx-setup
docker-buildx-setup:
@if ! docker buildx ls | grep -q mcp-builder; then \
docker buildx create --name mcp-builder --use; \
docker buildx inspect --bootstrap; \
else \
docker buildx use mcp-builder; \
fi
# Clean Docker buildx builder
.PHONY: docker-buildx-clean
docker-buildx-clean:
-docker buildx rm mcp-builder
.PHONY: license-check
license-check:
license-eye header check
# go install github.com/apache/skywalking-eyes/cmd/license-eye@latest
.PHONY: license-fix
license-fix:
license-eye header fix