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