|
| 1 | +# Basic variables |
1 | 2 | GOOS ?= $(shell go env GOOS)
|
2 | 3 | GOARCH ?= $(shell go env GOARCH)
|
3 | 4 | VERSION ?= $(shell hack/version.sh)
|
4 |
| -# Images management |
5 |
| -REGISTRY ?= "docker.io/karmada" |
6 |
| -REGISTRY_USER_NAME ?= "" |
7 |
| -REGISTRY_PASSWORD ?= "" |
8 |
| -REGISTRY_SERVER_ADDRESS ?= "" |
9 | 5 |
|
| 6 | +# Default target when just running 'make' |
| 7 | +.DEFAULT_GOAL := all |
| 8 | + |
| 9 | +# Build targets |
10 | 10 | TARGETS := karmada-dashboard-api \
|
11 |
| - karmada-dashboard-web \ |
12 |
| - |
13 |
| - |
14 |
| -# Build binary. |
15 |
| -# |
16 |
| -# Args: |
17 |
| -# GOOS: OS to build. |
18 |
| -# GOARCH: Arch to build. |
19 |
| -# |
20 |
| -# Example: |
21 |
| -# make |
22 |
| -# make all |
23 |
| -# make karmada-dashboard-api GOOS=linux |
| 11 | + karmada-dashboard-web |
| 12 | + |
| 13 | +# Docker image related variables |
| 14 | +REGISTRY ?= docker.io/karmada |
| 15 | +REGISTRY_USER_NAME ?= |
| 16 | +REGISTRY_PASSWORD ?= |
| 17 | +REGISTRY_SERVER_ADDRESS ?= |
| 18 | +IMAGE_TARGET := $(addprefix image-, $(TARGETS)) |
| 19 | + |
| 20 | +# Development server variables |
| 21 | +KARMADA_CTX ?= karmada-apiserver |
| 22 | +HOST_CTX ?= karmada-host |
| 23 | +API_PORT ?= 8000 |
| 24 | +API_HOST ?= http://localhost:8000 |
| 25 | +SKIP_TLS_VERIFY ?= false |
| 26 | +KUBECONFIG ?= $(HOME)/.kube/karmada.config |
| 27 | + |
| 28 | +################### |
| 29 | +# Build Targets # |
| 30 | +################### |
| 31 | + |
| 32 | +# Build all binaries (alias for build) |
| 33 | +.PHONY: all |
| 34 | +all: build |
| 35 | + |
| 36 | +# Build all binaries |
| 37 | +.PHONY: build |
| 38 | +build: $(TARGETS) |
| 39 | + |
| 40 | +# Build specific binary |
24 | 41 | .PHONY: $(TARGETS)
|
25 | 42 | $(TARGETS):
|
26 | 43 | BUILD_PLATFORMS=$(GOOS)/$(GOARCH) hack/build.sh $@
|
27 | 44 |
|
28 |
| -.PHONY: all |
29 |
| -all: $(TARGETS) |
30 |
| - |
31 |
| -# Build image. |
32 |
| -# |
33 |
| -# Args: |
34 |
| -# GOARCH: Arch to build. |
35 |
| -# OUTPUT_TYPE: Destination to save image(docker/registry). |
36 |
| -# |
37 |
| -# Example: |
38 |
| -# make images |
39 |
| -# make image-karmada-dashboard-api |
40 |
| -# make image-karmada-dashboard-api GOARCH=arm64 |
41 |
| -IMAGE_TARGET=$(addprefix image-, $(TARGETS)) |
| 45 | +################### |
| 46 | +# Docker Images # |
| 47 | +################### |
| 48 | + |
| 49 | +# Build all images |
| 50 | +.PHONY: images |
| 51 | +images: $(IMAGE_TARGET) |
| 52 | + |
| 53 | +# Build specific image |
42 | 54 | .PHONY: $(IMAGE_TARGET)
|
43 | 55 | $(IMAGE_TARGET):
|
44 | 56 | set -e;\
|
45 | 57 | target=$$(echo $(subst image-,,$@));\
|
46 | 58 | make $$target GOOS=linux;\
|
47 | 59 | VERSION=$(VERSION) REGISTRY=$(REGISTRY) BUILD_PLATFORMS=linux/$(GOARCH) hack/docker.sh $$target
|
48 | 60 |
|
| 61 | +################### |
| 62 | +# UI Building # |
| 63 | +################### |
49 | 64 |
|
| 65 | +.PHONY: bundle-ui-dashboard |
50 | 66 | bundle-ui-dashboard:
|
51 | 67 | cd ui && pnpm run dashboard:build
|
52 |
| -bin-karmada-dashboard-web: |
53 |
| - BUILD_PLATFORMS=$(GOOS)/$(GOARCH) hack/build.sh karmada-dashboard-web |
54 |
| -image-karmada-dashboard-web: |
55 |
| - BUILD_PLATFORMS=linux/$(GOARCH) hack/build.sh karmada-dashboard-web |
56 |
| - cp -R ui/apps/dashboard/dist _output/bin/linux/$(GOARCH)/dist |
57 |
| - DOCKER_FILE="build-web.Dockerfile" VERSION=$(VERSION) REGISTRY=$(REGISTRY) BUILD_PLATFORMS=linux/$(GOARCH) hack/docker.sh karmada-dashboard-web |
58 | 68 |
|
| 69 | +################### |
| 70 | +# Dependencies # |
| 71 | +################### |
| 72 | + |
| 73 | +# Install Go dependencies |
| 74 | +.PHONY: install-deps |
| 75 | +install-deps: |
| 76 | + go mod tidy |
| 77 | + go mod verify |
| 78 | + |
| 79 | +# Install UI dependencies |
| 80 | +.PHONY: install-ui-deps |
| 81 | +install-ui-deps: |
| 82 | + cd ui && pnpm install |
| 83 | + |
| 84 | +# Install all dependencies |
| 85 | +.PHONY: install |
| 86 | +install: install-deps install-ui-deps |
| 87 | + |
| 88 | +################### |
| 89 | +# Development # |
| 90 | +################### |
| 91 | + |
| 92 | +# Run both API and Web server |
| 93 | +.PHONY: run |
| 94 | +run: |
| 95 | +ifndef KUBECONFIG |
| 96 | + $(error KUBECONFIG is required. Please specify the path to karmada kubeconfig) |
| 97 | +endif |
| 98 | + @echo "Starting API server..." |
| 99 | + @_output/bin/$(GOOS)/$(GOARCH)/karmada-dashboard-api \ |
| 100 | + --karmada-kubeconfig=$(KUBECONFIG) \ |
| 101 | + --karmada-context=$(KARMADA_CTX) \ |
| 102 | + --kubeconfig=$(KUBECONFIG) \ |
| 103 | + --context=$(HOST_CTX) \ |
| 104 | + --insecure-port=$(API_PORT) \ |
| 105 | + $(if $(filter true,$(SKIP_TLS_VERIFY)),--skip-karmada-apiserver-tls-verify) & echo $$! > .api.pid |
| 106 | + @echo "Starting Web server..." |
| 107 | + @cd ui && VITE_API_HOST=$(API_HOST) pnpm run dashboard:dev || (kill `cat .api.pid` && rm .api.pid) |
| 108 | + @if [ -f .api.pid ]; then kill `cat .api.pid` && rm .api.pid; fi |
| 109 | + |
| 110 | +# Run API server only |
| 111 | +.PHONY: run-api |
| 112 | +run-api: build |
| 113 | +ifndef KUBECONFIG |
| 114 | + $(error KUBECONFIG is required. Please specify the path to karmada kubeconfig) |
| 115 | +endif |
| 116 | + _output/bin/$(GOOS)/$(GOARCH)/karmada-dashboard-api \ |
| 117 | + --karmada-kubeconfig=$(KUBECONFIG) \ |
| 118 | + --karmada-context=$(KARMADA_CTX) \ |
| 119 | + --kubeconfig=$(KUBECONFIG) \ |
| 120 | + --context=$(HOST_CTX) \ |
| 121 | + --insecure-port=$(API_PORT) \ |
| 122 | + $(if $(filter true,$(SKIP_TLS_VERIFY)),--skip-karmada-apiserver-tls-verify) |
| 123 | + |
| 124 | +# Run Web server only |
| 125 | +.PHONY: run-web |
| 126 | +run-web: install-ui-deps build |
| 127 | + cd ui && VITE_API_HOST=$(API_HOST) pnpm run dashboard:dev |
| 128 | + |
| 129 | +# Generate JWT token for dashboard login |
| 130 | +.PHONY: gen-token |
| 131 | +gen-token: |
| 132 | +ifndef KUBECONFIG |
| 133 | + $(error KUBECONFIG is required. Please specify the path to karmada kubeconfig) |
| 134 | +endif |
| 135 | + @echo "Switching to karmada-apiserver context..." |
| 136 | + @kubectl config use-context $(KARMADA_CTX) |
| 137 | + @echo "Creating service account..." |
| 138 | + @kubectl apply -f artifacts/dashboard/karmada-dashboard-sa.yaml |
| 139 | + @echo "Getting JWT token..." |
| 140 | + @kubectl -n karmada-system get secret/karmada-dashboard-secret -o go-template="{{.data.token | base64decode}}" |
| 141 | + @echo |
| 142 | + |
| 143 | +################### |
| 144 | +# Help # |
| 145 | +################### |
| 146 | + |
| 147 | +# Show help |
| 148 | +.PHONY: help |
| 149 | +help: |
| 150 | + @echo "Karmada Dashboard Makefile" |
| 151 | + @echo "" |
| 152 | + @echo "Usage:" |
| 153 | + @echo " make - Build all binaries (same as 'make all')" |
| 154 | + @echo " make all - Build all binaries" |
| 155 | + @echo " make install - Install all dependencies" |
| 156 | + @echo " make run - Run both API and Web servers" |
| 157 | + @echo " make images - Build all Docker images" |
| 158 | + @echo "" |
| 159 | + @echo "Development Commands:" |
| 160 | + @echo " make run-api - Run API server only" |
| 161 | + @echo " make run-web - Run Web server only" |
| 162 | + @echo " make install-deps - Install Go dependencies" |
| 163 | + @echo " make install-ui-deps - Install UI dependencies" |
| 164 | + @echo " make gen-token - Generate JWT token for dashboard login" |
| 165 | + @echo "" |
| 166 | + @echo "Build Commands:" |
| 167 | + @echo " make build - Build all binaries" |
| 168 | + @echo " make images - Build all Docker images" |
| 169 | + @echo "" |
| 170 | + @echo "Variables:" |
| 171 | + @echo " KUBECONFIG - Path to karmada kubeconfig file (default: $(HOME)/.kube/karmada.config)" |
| 172 | + @echo " KARMADA_CTX - Karmada API server context (default: karmada-apiserver)" |
| 173 | + @echo " HOST_CTX - Host cluster context (default: karmada-host)" |
| 174 | + @echo " API_PORT - API server port (default: 8000)" |
| 175 | + @echo " API_HOST - API server host (default: http://localhost:8000)" |
| 176 | + @echo " GOOS - Target OS for build" |
| 177 | + @echo " GOARCH - Target architecture for build" |
| 178 | + @echo " SKIP_TLS_VERIFY - Skip TLS verification for Karmada API server (default: false)" |
0 commit comments