mirror of
https://github.com/gl-inet/glkvm-cloud.git
synced 2026-09-12 05:48:57 +00:00
5c7ff5531b
- Rename debug-cn to debug-dev-server for generic naming - Use DEBUG_DEV_SERVER_IP environment variable instead of hardcoded IP - Derive host, path, and dir from IP and user variables Signed-off-by: GL.iNet-Yongping.Xie <yongping.xie@gl-inet.com>
91 lines
3.1 KiB
Makefile
91 lines
3.1 KiB
Makefile
# Makefile
|
|
# ---------------- Project ----------------
|
|
BINARY_NAME ?= rttys
|
|
UI_DIR ?= ui
|
|
GO_MAIN ?= ./cmd/glkvm-cloud
|
|
|
|
# Go build flags
|
|
BUILD_FLAGS ?= -ldflags "-s -w"
|
|
DIST_DIR ?= dist
|
|
|
|
# Image name
|
|
IMAGE_NAME ?= glkvm-cloud
|
|
IMAGE_TAG ?= build
|
|
|
|
GOARCH ?= $(shell go env GOARCH)
|
|
|
|
# ---------------- Commands ----------------
|
|
.PHONY: all ui debug-local debug-dev-server \
|
|
build-linux-amd64 build-linux-arm64 build-linux-all \
|
|
docker-buildx docker-buildx-full
|
|
|
|
all: build-linux-amd64 build-linux-arm64
|
|
|
|
# Build frontend files only
|
|
ui:
|
|
cd $(UI_DIR) && npm install && npm run build
|
|
|
|
# ---------------- Cross compile (Linux) ----------------
|
|
# Produce: dist/rttys-linux-amd64 , dist/rttys-linux-arm64
|
|
build-linux-amd64:
|
|
@mkdir -p $(DIST_DIR)
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
|
|
go build $(BUILD_FLAGS) -o $(DIST_DIR)/$(BINARY_NAME)-linux-amd64 $(GO_MAIN)
|
|
|
|
build-linux-arm64:
|
|
@mkdir -p $(DIST_DIR)
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 \
|
|
go build $(BUILD_FLAGS) -o $(DIST_DIR)/$(BINARY_NAME)-linux-arm64 $(GO_MAIN)
|
|
|
|
# ---------------- Docker Buildx ----------------
|
|
# Multi-arch build
|
|
# Usage:
|
|
# make docker-buildx GOARCH=amd64 IMAGE_TAG=build-amd64
|
|
# make docker-buildx GOARCH=arm64 IMAGE_TAG=build-arm64
|
|
REGISTRY ?=
|
|
|
|
# If REGISTRY is set, tag becomes: REGISTRY/IMAGE_NAME:IMAGE_TAG
|
|
ifdef REGISTRY
|
|
IMAGE_REF := $(REGISTRY)/$(IMAGE_NAME):$(IMAGE_TAG)
|
|
else
|
|
IMAGE_REF := $(IMAGE_NAME):$(IMAGE_TAG)
|
|
endif
|
|
|
|
docker-buildx:
|
|
@docker buildx version >/dev/null 2>&1 || (echo "docker buildx not available" && exit 1)
|
|
@echo "==> buildx (load local image): $(IMAGE_REF) [linux/$(GOARCH)]"
|
|
docker buildx build \
|
|
--platform linux/$(GOARCH) \
|
|
-t $(IMAGE_REF) \
|
|
--load .
|
|
|
|
docker-buildx-full: ui
|
|
@$(MAKE) docker-buildx
|
|
|
|
|
|
DEBUG_HOST ?= root@xxxxxxxxxx
|
|
DEBUG_PATH ?= /root/glkvmcloudbuild.tar
|
|
# Local debug bundle (amd64 image + save tar), upload to debug host, then load
|
|
debug-local: build-linux-amd64 docker-buildx
|
|
docker save $(IMAGE_NAME):$(IMAGE_TAG) -o glkvmcloudbuild.tar
|
|
ssh $(DEBUG_HOST) "rm -f $(DEBUG_PATH)"
|
|
scp glkvmcloudbuild.tar $(DEBUG_HOST):$(DEBUG_PATH)
|
|
ssh $(DEBUG_HOST) "docker load < $(DEBUG_PATH)"
|
|
ssh $(DEBUG_HOST) "cd /root/glkvm_cloud && docker-compose down && docker-compose up -d"
|
|
|
|
# ---------------- Dev server debug ----------------
|
|
# Set DEBUG_DEV_SERVER_IP via environment variable, e.g.:
|
|
# export DEBUG_DEV_SERVER_IP=1.2.3.4
|
|
# make debug-dev-server
|
|
DEBUG_DEV_SERVER_IP ?= $(error DEBUG_DEV_SERVER_IP is not set)
|
|
DEBUG_DEV_SERVER_USER ?= ubuntu
|
|
DEBUG_DEV_SERVER_HOST = $(DEBUG_DEV_SERVER_USER)@$(DEBUG_DEV_SERVER_IP)
|
|
DEBUG_DEV_SERVER_PATH ?= /home/$(DEBUG_DEV_SERVER_USER)/glkvmcloudbuild.tar
|
|
DEBUG_DEV_SERVER_DIR ?= /home/$(DEBUG_DEV_SERVER_USER)/glkvm_cloud
|
|
debug-dev-server: build-linux-amd64 docker-buildx
|
|
docker save $(IMAGE_NAME):$(IMAGE_TAG) -o glkvmcloudbuild.tar
|
|
ssh $(DEBUG_DEV_SERVER_HOST) "rm -f $(DEBUG_DEV_SERVER_PATH)"
|
|
scp glkvmcloudbuild.tar $(DEBUG_DEV_SERVER_HOST):$(DEBUG_DEV_SERVER_PATH)
|
|
ssh $(DEBUG_DEV_SERVER_HOST) "sudo docker load < $(DEBUG_DEV_SERVER_PATH)"
|
|
ssh $(DEBUG_DEV_SERVER_HOST) "cd $(DEBUG_DEV_SERVER_DIR) && sudo docker-compose down && sudo docker-compose up -d"
|