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

上次更新:
贡献者: iEchoxu