Skip to content
blycr edited this page Feb 18, 2026 · 5 revisions

构建与发布(Go 原生跨平台)

环境要求

  • Go 1.25+
  • Node.js 18+(用于前端构建)
  • pnpm(推荐使用,更快的包管理工具)
  • Windows PowerShell(一键脚本)
  • 可选:macOS(用于合并 universal 与签名)、Docker(用于旧 glibc 兼容)

一键脚本

  • 默认生成 Windows x64:
    • scripts/build.ps1scripts/build.sh
  • 指定平台/架构:
    • Windows:scripts/build.ps1 -Platforms windows -Architectures x64,x86
    • Linux/macOS:scripts/build.sh -Platforms windows,linux,macos,arm -Architectures x64,x86,amd64,arm64,v7,v8

产物与校验

  • 产物目录:bin/
    • windows/x64/msp-windows-amd64.exe
    • windows/x86/msp-windows-386.exe
    • linux/amd64/msp-linux-amd64
    • linux/arm64/msp-linux-arm64
    • arm/v7/msp-arm-v7
    • arm/v8/msp-arm-v8
    • macos/msp-macos-amd64, macos/msp-macos-arm64
  • 校验目录:checksums/(对应 .sha256
  • 调试拷贝目录:debug/(便于分发与符号管理)
  • 说明:可执行文件仅生成在 bin/ 目录,不在仓库根生成可执行文件

macOS universal(需在 macOS 机器)

lipo -create -output bin/macos/msp-macos-universal \
  bin/macos/msp-macos-amd64 bin/macos/msp-macos-arm64
  • 可选签名(需开发者证书):
codesign --force --sign "Developer ID Application: 你的名字 (TEAMID)" \
  --options runtime --timestamp bin/macos/msp-macos-universal

发布 Release(GitHub Actions)

  • 推送标签触发:推送 v* 标签会自动构建全部平台并创建 Release。
  • 手动触发:在 Actions 里选择 release 工作流,填入 versionnotes
  • 工作流文件:.github/workflows/release.yml
    • 包含 build-linuxbuild-macosbuild-windows 三个作业与最终 release 作业
    • 作业内已接入一键脚本:Linux/macOS 使用 scripts/build.sh,Windows 使用 scripts/build.ps1
    • 会将所有平台产物与校验文件打到 Release 附件

glibc 兼容(可选)

  • 纯 Go 构建不依赖 glibc;如需 glibc 2.17 动态链接版本,建议使用 CentOS 7 Docker 镜像并启用 CGO。
  • 该选项可在未来按需添加,不影响当前“原生跨平台”构建方案。

Clone this wiki locally