Go跨平台编译与部署
Go跨平台编译与部署
交叉编译
Go 原生支持交叉编译,无需额外工具:
# 编译 Linux 64位
GOOS=linux GOARCH=amd64 go build -o mytool-linux
# 编译 Windows 64位
GOOS=windows GOARCH=amd64 go build -o mytool.exe
# 编译 macOS
GOOS=darwin GOARCH=amd64 go build -o mytool-macDocker 多阶段构建
FROM golang:1.22 AS builder
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0 go build -o mytool
FROM alpine:latest
COPY --from=builder /app/mytool /usr/local/bin/
ENTRYPOINT ["mytool"]版本信息注入
go build -ldflags "-X main.version=1.0.0 -X main.buildTime=$(date -u +%Y%m%d)"发布最佳实践
- 使用 GoReleaser 自动化构建和发布
- 生成 SHA256 校验和
- 提供多种格式(tar.gz、zip、deb、rpm)
- 编写 CHANGELOG
总结
Go 的跨平台编译能力是其一大优势。配合 Docker 和 GoReleaser,可以轻松实现自动化的构建和发布流程。