# XBoard 编译指南 本文档说明如何编译 XBoard 的 Dashboard 和 Agent 组件。 ## 预编译二进制文件 如果不想自己编译,可以直接下载预编译的二进制文件: **下载地址**:`https://download.sharon.wiki/` - **Server (Dashboard)**:`https://download.sharon.wiki/server/` - `xboard-server-linux-amd64` - `xboard-server-linux-arm64` - `xboard-server-windows-amd64.exe` - `xboard-server-darwin-amd64` - `xboard-server-darwin-arm64` - `migrate-linux-amd64` - `migrate-linux-arm64` - **Agent**:`https://download.sharon.wiki/agent/` - `xboard-agent-linux-amd64` - `xboard-agent-linux-arm64` - `xboard-agent-linux-386` - `xboard-agent-windows-amd64.exe` - `xboard-agent-windows-386.exe` - `xboard-agent-darwin-amd64` - `xboard-agent-darwin-arm64` - `xboard-agent-freebsd-amd64` **使用方法**: ```bash # 下载 Server wget https://download.sharon.wiki/server/xboard-server-linux-amd64 chmod +x xboard-server-linux-amd64 # 下载 Agent wget https://download.sharon.wiki/agent/xboard-agent-linux-amd64 chmod +x xboard-agent-linux-amd64 ``` --- ## 前置要求 ### 必需工具 - Go 1.19 或更高版本 - Node.js 16+ 和 npm (用于前端构建) - Git ### Linux 环境 - Bash shell - 标准 Unix 工具 (sha256sum, etc.) ### Windows 环境 - PowerShell 5.1 或更高版本 ## 快速开始 ### Linux/macOS 环境 ```bash # 赋予执行权限 chmod +x build-all.sh # 构建所有组件 ./build-all.sh all # 或使用 make make release ``` ### Windows 环境 ```powershell # 构建所有组件 .\build-all.ps1 -Target all # 指定版本号 .\build-all.ps1 -Target all -Version "1.0.0" ``` ## 编译选项 ### 使用 build-all.sh (Linux/macOS) ```bash # 仅清理构建文件 ./build-all.sh clean # 仅构建前端 ./build-all.sh frontend # 仅构建 Server (Dashboard) ./build-all.sh server # 仅构建 Agent (全架构) ./build-all.sh agent # 构建所有组件 ./build-all.sh all ``` ### 使用 build-all.ps1 (Windows) ```powershell # 仅清理构建文件 .\build-all.ps1 -Target clean # 仅构建前端 .\build-all.ps1 -Target frontend # 仅构建 Server (Dashboard) .\build-all.ps1 -Target server # 仅构建 Agent (全架构) .\build-all.ps1 -Target agent # 构建所有组件 .\build-all.ps1 -Target all ``` ### 使用 Makefile ```bash # 构建 Server (当前平台) make build # 构建 Server (所有平台) make build-all # 构建 Agent (当前平台) make agent # 构建 Agent (所有平台) make agent-all # 构建所有发布版本 make release # 查看所有可用命令 make help ``` ## 构建产物 编译完成后,所有二进制文件将位于 `dist/` 目录: ``` dist/ ├── agent/ │ ├── xboard-agent-linux-amd64 │ ├── xboard-agent-linux-arm64 │ ├── xboard-agent-linux-386 │ ├── xboard-agent-windows-amd64.exe │ ├── xboard-agent-windows-386.exe │ ├── xboard-agent-darwin-amd64 │ ├── xboard-agent-darwin-arm64 │ ├── xboard-agent-freebsd-amd64 │ └── SHA256SUMS ├── server/ │ ├── xboard-server-linux-amd64 │ ├── xboard-server-linux-arm64 │ ├── xboard-server-windows-amd64.exe │ ├── xboard-server-darwin-amd64 │ ├── xboard-server-darwin-arm64 │ ├── migrate-linux-amd64 │ ├── migrate-linux-arm64 │ └── SHA256SUMS ├── web/ │ └── dist/ └── VERSION.txt ``` ## 支持的平台 ### Server (Dashboard) - Linux (amd64, arm64) - Windows (amd64) - macOS (amd64, arm64/Apple Silicon) ### Agent - Linux (amd64, arm64, 386) - Windows (amd64, 386) - macOS (amd64, arm64/Apple Silicon) - FreeBSD (amd64) ## 版本信息 编译时可以通过环境变量指定版本信息: ```bash # Linux/macOS VERSION=1.0.0 ./build-all.sh all # Windows .\build-all.ps1 -Target all -Version "1.0.0" ``` 版本信息会被嵌入到二进制文件中,可以通过以下命令查看: ```bash # Server ./xboard-server-linux-amd64 -version # Agent ./xboard-agent-linux-amd64 -version ``` ## 校验和验证 每个构建都会生成 SHA256 校验和文件 (`SHA256SUMS`),用于验证文件完整性: ```bash # Linux/macOS cd dist/agent sha256sum -c SHA256SUMS # Windows (PowerShell) cd dist\agent Get-Content SHA256SUMS | ForEach-Object { $hash, $file = $_ -split '\s+', 2 $computed = (Get-FileHash $file -Algorithm SHA256).Hash.ToLower() if ($hash -eq $computed) { Write-Host "OK: $file" -ForegroundColor Green } else { Write-Host "FAILED: $file" -ForegroundColor Red } } ``` ## 手动编译 如果需要手动编译特定平台: ### Server ```bash # Linux amd64 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o xboard-server-linux-amd64 ./cmd/server # Windows amd64 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o xboard-server-windows-amd64.exe ./cmd/server # macOS arm64 (Apple Silicon) CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" -o xboard-server-darwin-arm64 ./cmd/server ``` ### Agent ```bash cd agent # Linux amd64 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o xboard-agent-linux-amd64 . # Windows amd64 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o xboard-agent-windows-amd64.exe . # macOS arm64 (Apple Silicon) CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" -o xboard-agent-darwin-arm64 . ``` ### 前端 ```bash cd web npm install npm run build # 构建产物在 web/dist/ 目录 ``` ## 常见问题 ### 1. 前端构建失败 确保已安装 Node.js 和 npm: ```bash node --version npm --version ``` 如果 npm install 失败,尝试清理缓存: ```bash cd web rm -rf node_modules package-lock.json npm cache clean --force npm install ``` ### 2. Go 模块下载失败 设置 Go 代理(中国大陆用户): ```bash go env -w GOPROXY=https://goproxy.cn,direct ``` ### 3. 交叉编译失败 确保 CGO_ENABLED=0,因为交叉编译不支持 CGO: ```bash CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ... ``` ### 4. Windows 上执行脚本被阻止 如果 PowerShell 执行策略阻止脚本运行: ```powershell # 临时允许(当前会话) Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass # 或者直接运行 PowerShell -ExecutionPolicy Bypass -File .\build-all.ps1 -Target all ``` ## 持续集成 可以在 CI/CD 环境中使用这些脚本: ### GitHub Actions 示例 ```yaml name: Build on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Go uses: actions/setup-go@v4 with: go-version: '1.21' - name: Set up Node.js uses: actions/setup-node@v3 with: node-version: '18' - name: Build all run: | chmod +x build-all.sh VERSION=${{ github.ref_name }} ./build-all.sh all - name: Upload artifacts uses: actions/upload-artifact@v3 with: name: xboard-binaries path: dist/ ``` ## 开发构建 对于开发环境,可以使用更快的构建方式: ```bash # 仅构建当前平台的 Server make build # 仅构建当前平台的 Agent make agent # 或直接运行 go run ./cmd/server -config configs/config.yaml cd agent && go run . -config ../configs/config.yaml ``` ## 相关文档 - [安装指南](README_SETUP.md) - [Agent 自动更新](docs/agent-auto-update.md) - [数据库迁移](docs/database-migration.md) - [本地安装](docs/local-installation.md) ## 技术支持 如有问题,请查看: - [GitHub Issues](https://github.com/ZYHUO/dashGO/issues) - [文档目录](docs/)