# iotLCM 开源版 —— 常用构建入口 # # make build 编译全部 Go 服务 # make test 跑全部 Go 模块的单元测试 # make images 本地构建全部镜像(默认 tag 用 git describe) # make docs 本地构建文档站 # make website 本地构建官网 # make clean 清理构建产物 # # 镜像仓库与版本可覆盖: # make images REGISTRY=registry.example.com/iotlcm/iotlcm VERSION=v1.0.4 REGISTRY ?= iotlcm VERSION ?= $(shell git describe --tags --abbrev=0 2>/dev/null || git rev-parse --short HEAD) BASE_REGISTRY ?= docker.io/library GO_MODULES := admin-svr/server app/server bot onelink-mock openapi sms upstream-chan upstream-proxy worker-svr # 目录|镜像名|构建上下文|Dockerfile|固定版本(留空=跟随 VERSION) # 小程序线 app 固定 v1.0.2:版本号与功能一一对应,平台发新 tag 时不跟着动。 IMAGE_MAP := \ admin-svr|iotlcm-admin-svr|admin-svr/server|build/Dockerfile| \ admin-ui|iotlcm-admin-ui|admin-ui|vue/build/Dockerfile| \ openapi|iotlcm-openapi|openapi|build/Dockerfile| \ worker-svr|iotlcm-worker-svr|worker-svr|build/Dockerfile| \ upstream-chan|iotlcm-upstream-chan|upstream-chan|build/Dockerfile| \ upstream-proxy|iotlcm-upstream-proxy|upstream-proxy|build/Dockerfile| \ app|iotlcm-app-server|app/server|Dockerfile|v1.0.2 \ app|iotlcm-app-web|app/app|Dockerfile|v1.0.2 \ sms|iotlcm-sms|sms|build/Dockerfile| \ bot|iotlcm-bot|bot|Dockerfile| \ docs|iotlcm-docs|docs|Dockerfile| \ website|iotlcm-website|website|Dockerfile| \ onelink-mock|iotlcm-onelink-mock|onelink-mock|Dockerfile| .PHONY: help build test images docs website clean help: @grep -E '^# make' Makefile | sed 's/^# //' build: @set -e; for m in $(GO_MODULES); do \ echo "==> go build ./... ($$m)"; \ ( cd "$$m" && go build ./... ); \ done @echo "✅ 全部 Go 服务编译通过" test: @set -e; for m in $(GO_MODULES); do \ echo "==> go test ./... ($$m)"; \ ( cd "$$m" && go test ./... ); \ done images: @set -e; echo "镜像前缀: $(REGISTRY) 版本: $(VERSION)"; \ echo "$(IMAGE_MAP)" | tr ' ' '\n' | while IFS='|' read -r dir img ctx df pin; do \ [ -z "$$dir" ] && continue; \ v="$${pin:-$(VERSION)}"; \ echo ""; echo "==> $$img:$$v (context=$$ctx dockerfile=$$df$${pin:+ [固定版本]})"; \ docker build -f "$$ctx/$$df" \ --build-arg BASE_REGISTRY="$(BASE_REGISTRY)" \ --build-arg BuildVersion="$$v" \ --build-arg CommitID="$$(git rev-parse --short=7 HEAD)" \ --build-arg BuildTime="$$(date -u +%FT%TZ)" \ -t "$(REGISTRY):$$img-$$v" "$$ctx"; \ done docs: cd docs && npm ci && npm run build @echo "✅ 文档站产物:docs/.vitepress/dist" website: cd website && npm ci && npm run build @echo "✅ 官网产物:website/.vitepress/dist" clean: @rm -rf docs/.vitepress/dist docs/.vitepress/cache @rm -rf website/.vitepress/dist website/.vitepress/cache @echo "✅ 已清理"