介绍

GoReleaser是Go项目的发布自动化工具,目标是简化构建,release和发布步骤,同时为所有步骤提供适当的自定义选项.

GoReleaser是为CI工具而构建的;你只需要在您的构建脚本中下载并执行它。您可以通过定制一个关于你的发布过程的.goreleaser.yml文件.

这个想法始于一个简单的shell脚本,但它很快变得更加复杂,我也希望通过Homebrew taps发布二进制文件,这会使脚本变得更加hacky,所以我放弃了它,并在Go中重写了整个内容.

安装Goreleaser

有三种方法可以安装GoReleaser:

使用homebrew

brew install goreleaser/tap/goreleaser

使用snapcraft

snap install goreleaser

使用Scoop

scoop bucket add goreleaser https://github.com/goreleaser/scoop-bucket.git
scoop install goreleaser

查看tap源,了解更多细节.

使用Docker

您可以使用Docker来执行简单的发布.目前,提供的docker镜像不支持snapcraft.

$ docker run --rm --privileged \
  -v $PWD:/go/src/github.com/user/repo \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -w /go/src/github.com/user/repo \
  -e GITHUB_TOKEN \
  -e DOCKER_USERNAME \
  -e DOCKER_PASSWORD \
  goreleaser/goreleaser release

请注意,镜像几乎总是最后一个稳定的Go版本.

如果您需要更多东西,我们鼓励您拥有自己的镜像。你可以使用GoReleaser自身的Dockerfile作为示例.

手动

发布页面下载您喜欢的味道,并手动安装.

用go get

注意:此方法需要Go 1.10+.

$ go get -d github.com/goreleaser/goreleaser
$ cd $GOPATH/src/github.com/goreleaser/goreleaser
$ dep ensure -vendor-only
$ make setup build

建议也运行下dep ensure,确保依赖项的版本正确.