GoReleaser 使用教程
笔记
| 共 517 字 | 20180415 发表 | 20180424 更新
众所周知,go 语言是支持跨平台编译的,如果每次编译发布都手动操作的话太麻烦了。GoReleaser这个工具就可以帮助我们编译和发布,配置好后每次发布时只需一行命令就直接编译并发布了,显著地提高了生产力 🤣
首先要配置一下goreleaser.yml
,这里用我的WebSocks作为示例。我这个项目比较特殊,有 server 与 local 两个 main 函数,所以 binary 要两个都编译。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| builds:
- binary: websocks-local
main: ./cmd/websocks-local/main.go
goos:
- windows
- darwin
- linux
- freebsd
goarch:
- amd64
- 386
- arm
- arm64
goarm:
- 6
- 7
- binary: websocks-server
main: ./cmd/websocks-server/main.go
goos:
- windows
- darwin
- linux
- freebsd
goarch:
- amd64
- 386
- arm
- arm64
goarm:
- 6
- 7
archive:
name_template: "{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}"
replacements:
darwin: Darwin
linux: Linux
windows: Windows
386: i386
amd64: x86_64
format_overrides:
- goos: windows
format: zip
|
配置好了以后要记得往.gitignore
里加上一行’dist',因为 goreleaser 会默认把编译编译好的文件输出到 dist 文件夹。
这样 goreleaser 就算配置好了,我们可以先编译一下试试
1
| goreleaser --skip-validate --skip-publish --snapshot
|
没什么问题的话就把改动添加到 git 里面,push 到 github
1
2
3
4
5
| git add .
git commit -S -m "add goreleaser"
git tag -a v0.1.0 -m "First release"
git push origin master
git push origin v0.1.0
|
在 release 之前,我们要先添加一下 github 的 token,如果没有的话要先去这里申请一个
1
| export GITHUB_TOKEN='YOUR_TOKEN'
|
至此,全部工作都搞定了,可以一键起飞了

其实还可以配合 CI 使用效率更佳