构建与发布 Go 程序
介绍手动构建 Go 应用以及使用 GoReleaser 发布 Go 应用到 Github。
手动构建 Go应用
不同平台构建 Go 应用使用的命令如下:
- Linux:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o speedgithub -gcflags "-N -l" -ldflags "-s -w" main.go - windows:
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o speedgithub.exe -gcflags "-N -l" -ldflags "-s -w -H windowsgui" main.go注意:-H windowsgui会取消 cmd 窗口,如果你的应用需要用到命令行窗口需要删除此参数 - Mac:
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o speedgithub -gcflags "-N -l" -ldflags "-s -w" main.go - 树莓派:
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o speedgithubarm -gcflags "-N -l" -ldflags "-s -w" main.go
使用 GoReleaser 快速发布 Go 应用
- 安装:
go install github.com/goreleaser/goreleaser@latest - 创建快捷方式:
sudo ln -s /home/echoxu/workfiles/Apps/GOPATH/bin/goreleaser /usr/bin/goreleaser - 克隆项目:
git clone git@github.com:iEchoxu/FetchGithubIP.git - 初始化文件:
goreleaser init会在当前目录生成.goreleaser.yaml - 在
.gitignore中加入dist .gitignore .goreleaser.yaml .idea等文件 git pull origin maingit add .git commit -m "first commit"- 更新项目:
git push -u origin main - 配置 goreleaser:goreleaser 构建应用
- 发布前测试:
goreleaser release --snapshot --skip-publish --rm-dist会在 dist 目录下生成相应的安装包 - 给提交的 commit 打标签:
git tag -a v0.1.2 -m "bug fix: Problem with flushing DNS cache when hostChanList is empty" 0a46d45d6202d67761c9301be286e8155272c870 - 申请github tocken:github tocken
- 导入tocken:
export GITHUB_TOKEN='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' - 发布项目:
goreleaser --clean
Links: GoReleaser 配置文件