构建与发布 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 main
git 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 配置文件