d78379486c
- website/:VitePress 官网工程(首页/功能/对比/快速开始/部署运维/教程/社区),与文档站同构 - 两种形态由 SITE_BASE 决定:/www/ 子路径(过渡)与 / 根路径(独立域名),内容同源 - deploy/:新增 with-website profile、网关 /www/ 路由、多域名 website vhost 段 - Makefile:新增 website 镜像条目与 make website 目标 - 教程页给出部署/使用两支视频的元数据与录制要求,官网留有教程入口
80 lines
2.9 KiB
Makefile
80 lines
2.9 KiB
Makefile
# 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 "✅ 已清理"
|