快速开始

在这个例子中,我们将构建,存档和发布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