01.GoReleaser简介
GoReleaser 是一款发布自动化工具。旨在解决软件发布既枯燥又容易出错的问题。GoReleaser 无需编写脚本,整个发布流程都是通过 .goreleaser.yaml 文件进行定制的。每次想要创建新版本时,只需推送一个 Git 标签并运行 goreleaser release 命令即可。
GoReleaser 目前支持 Go、Rust、Zig、TypeScript(搭配 Bun 和 Deno)以及 Python。
安装
Install GoReleaser – GoReleaser
# go install
# > Requires Go 1.26.
go install github.com/goreleaser/goreleaser/v2@latest
# Bash Script
curl -sfL https://goreleaser.com/static/run | bash VERSION=v2.17.0 -s -- check
# APT Repository
echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' | sudo tee /etc/apt/sources.list.d/goreleaser.list
sudo apt update
sudo apt install goreleaser
基础使用
Step.1 创建Go语言项目
go mod init app.tech/proj/goreleaser-testing
Step.2 创建 main.go
cat << EOF | tee main.go
package main
func main() {
println("Ba dum, tss!")
}
EOF
Step.3 初始化 GoReleaser 配置
goreleaser init
Step.4 本地构建
## 本地构建
goreleaser build --snapshot --clean
# 本地构建并创建发布包
goreleaser release --snapshot --clean
--snapshot基于最新提交运行 GoReleaser 而不进行发布
Step.5 发布到 GitHub
发布到 GitHub Release 时,需要设置
GITHUB_TOKEN环境变量,该令牌将用于将版本部署到 GitHub 仓库。 创建 GitHub 令牌
export GITHUB_TOKEN="YOUR_GH_TOKEN"
git tag -a v0.1.0 -m "Release"
git push origin v0.1.0
## 构建并发布到GitHub
goreleaser release --clean
## 跳过发布
goreleaser release --skip=publish