在这个例子中,我们将构建,存档和发布Go项目.
创建一个GitHub存储库,并添加一个主包:
// main.go
package main
func main() {
println("Ba dum, tss!")
}
运行goreleaser init
创建一个例子,.goreleaser.yaml
文件:
$ goreleaser init
• Generating .goreleaser.yml file
• config created; please edit accordingly to your needs file=.goreleaser.yml
生成的配置文件如下所示:
# This is an example goreleaser.yaml file with some sane defaults.
# Make sure to check the documentation at http://goreleaser.com
builds:
- env:
- CGO_ENABLED=0
archive:
replacements:
darwin: Darwin
linux: Linux
windows: Windows
386: i386
amd64: x86_64
checksum:
name_template: 'checksums.txt'
snapshot:
name_template: "{{ .Tag }}-next"
changelog:
sort: asc
filters:
exclude:
- '^docs:'
- '^test:'
GoReleaser将为您的应用程序构建Windows,Linux和macOS
的二进制文件,包括amd64和i386
系结构.您可以通过更改定义的builds
部分。查看其文档获得更多信息.
构建二进制文件后,GoReleaser将为每个OS/Arch组合
创建一个单独存档文件。您可以自定义archive
部分的多项内容。查看其文档获得更多信息.
你需要导出一个GITHUB_TOKEN
环境变量,它应该包含一个有效的GitHubrepo
的tag范围。它用于将版本部署到您的GitHub存储库.您可以在这里创建令牌.
$ export GITHUB_TOKEN=`YOUR_TOKEN`
GoReleaser会使用您的存储库最新的Git tag。下面创建一个tag,并将其推送到GitHub:
$ git tag -a v0.1.0 -m "First release"
$ git push origin v0.1.0
注意:查看您的tag是否符合语义版本控制.
如果您还不想创建tag,还可以使用,基于最新提交的版本的--snapshot
参数.
现在您可以在存储库的根目录下,运行GoReleaser:
$ goreleaser
就这样! 查看您的GitHub项目的发布页面。该版本应如下所示:
如果你想在发布”真实”版本之前,测试所有内容,你可以使用--skip-publish
参数,只会构建和打包东西:
$ goreleaser release --skip-publish
您可以查看其他选项:
$ goreleaser --help
和
$ goreleaser release --help