使用 Goreleaser 发布 Go 包

2022年 10月 11日 64.4k 0

使用 Goreleaser 发布 Go 包

Goreleaser很棒。这是一个简单的工具,可以让你发布你的go包。最近,我和我的团队将它与我们构建的公司范围的 CLI 工具一起使用。在本教程中,我们将使用goreleaser自动发布一个简单的go包。

安装

在 macOS 上,要安装goreleaser,我们可以使用:

go install github.com/goreleaser/goreleaser@latest

或者我们使用流行的适用于 macOS 和 Linux 的自制包管理器:

brew install goreleaser/tap/goreleaser

在 Ubuntu Linux 上,我们可以使用apt

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

更多选项可以在这里找到。

创建包

创建一个新文件夹来存放我们的项目。然后初始化模块

go mod init main 

接下来,我们创建一个名为main.go. 在main.go中,复制并粘贴以下代码:

package main
func main() {
println("This is a tutorial about Goreleaser!")
}

 

初始化 Goreleaser

下一步是设置goreleaser。为此,我们运行:

goreleaser init

此命令在我们的目录中创建.goreleaser.yaml文件。我们将仔细研究这个文件。

更新.goreleaser.yaml

.goreleaser.yaml我在生成的文件中添加了更多字段。我们将介绍重要的部分。

release:
github:
owner: justdamilare
name: mytool
before:
hooks:
- go mod tidy
- go generate ./...
builds:
- env:
- GO_VERSION=1.19
goos:
- linux
- windows
- darwin
# replaces architecture naming in the archive name
archives:
- replacements:
darwin: Darwin
linux: Linux
windows: Windows
386: i386
amd64: x86_64
format_overrides:
- goos: windows
format: zip
checksum:
name_template: 'checksums.txt'
snapshot:
name_template: "{{ incpatch .Version }}-next"
changelog:
sort: asc
filters:
exclude:
- '^docs:'
- '^test:'
# upload binaries to gcloud bucket called `mytool`
blobs:
- provider: gs
bucket: mytool
folder: "{{ .Version }}"
# generate homebrew-tap  
brews:
- name: justdamilare
tap:
owner: mytool
name: homebrew-tap
folder: Formula
homepage: https://github.com/justdamilare/mytool
description: A simple go project
# use custom download strategy in case the Github repository is private
download_strategy: GitHubPrivateRepositoryReleaseDownloadStrategy
custom_require: "../custom_download_strategy"
test: |
system "#{bin}/mytool"
install: |
bin.install "mytool"

应该注意的是,如果不需要homebrew-tap并且blobs不需要,可以删除这些部分。如果需要,还应该创建homebrew-tap一个名为的 Githib 存储库。homebrew-tap

发布包

最后,我们可以发布我们的包。为此,我们需要为我们在 Git 上的发布创建一个标签。例如,要为 version 创建标签0.1.0,我们可以运行:

git tag v0.1.0

git push origin v0.1.0

然后在带有 的目录中main.go,运行:

goreleaser release

Goreleaser 将构建所有的二进制文件。这些二进制文件将使用本地 GitHub 凭据自动上传到 Github。构建也将位于/dist主目录中的文件夹中。如果包含brew发布方法,则生成的*.rb文件也将在/dist文件夹中。如果 Goreleaser 没有自动将生成的复制Formulahomebrew-taprepo,可以手动复制。

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论