手动打包教程

手动打包教程

本文档说明如何从源码构建 MLiev IAM 可执行文件。

前置条件

工具 版本 用途
Go 1.25+ 后端编译
Node.js 22+ 前端编译
pnpm 最新版 前端包管理
Make - 构建自动化

构建命令

完整构建(推荐)

# 构建前端 + 后端
make all

执行过程:

  1. 构建 @vben-core 核心包
  2. 构建 web-oidc → static/auth/
  3. 构建 web-antd → static/admin/
  4. 编译 Go 二进制文件 mliev-iam

仅构建后端

make build-go
# 等效于:go build -o mliev-iam .

注意:仅构建后端时,如果 static/ 目录没有前端构建产物,管理后台和登录页面将不可用。

仅构建前端

# 构建所有前端应用(自动处理依赖顺序)
make build-frontend

# 或单独构建
make build-oidc     # OIDC 登录页 → static/auth/
make build-antd     # 管理后台 → static/admin/
make build-install  # 安装向导 → static/install/

安装前端依赖

make install-frontend

跨平台编译

使用 GoReleaser 进行跨平台编译:

make release

生成的文件位于 dist/ 目录,支持以下平台:

Unix 系统(tar.gz)

  • Linux: amd64, arm64, arm (v5/v6/v7), loong64
  • macOS: amd64 (Intel), arm64 (Apple Silicon)

Windows(zip)

  • amd64, arm64

所有二进制文件均为静态链接(CGO_ENABLED=0),无外部依赖。

构建参数

Go 构建使用以下优化标志:

-s -w                    # 去除调试信息,减小体积
-extldflags "-static"    # 静态链接(Unix)
-X main.version=...      # 嵌入版本信息
-X main.commit=...       # 嵌入提交哈希

构建标签:netgo, osusergo(确保使用纯 Go 网络和用户查找实现)。

清理构建产物

make clean          # 清理所有
make clean-go       # 仅清理 Go 二进制
make clean-oidc     # 仅清理 OIDC 前端
make clean-antd     # 仅清理管理后台前端
make clean-packages # 仅清理核心包