Skip to content

Commit ce0e294

Browse files
committed
Support building/releasing binaries with goreleaser
Since this project requires cgo, the builds are performed in a container which includes the MinGW compiler (for Windows) and an OSX SDK.
1 parent 2318616 commit ce0e294

File tree

5 files changed

+303
-26
lines changed

5 files changed

+303
-26
lines changed

.goreleaser.yml

Lines changed: 279 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,279 @@
1+
env:
2+
- GO111MODULE=on
3+
- CGO_ENABLED=1
4+
- GOFLAGS=-mod=vendor
5+
- GOPROXY=off
6+
builds:
7+
- id: cfssl-darwin
8+
binary: cfssl
9+
env:
10+
- CC=o64-clang
11+
- CXX=o64-clang++
12+
goos:
13+
- darwin
14+
goarch:
15+
- amd64
16+
main: ./cmd/cfssl
17+
ldflags:
18+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
19+
- id: cfssl-linux
20+
binary: cfssl
21+
goos:
22+
- linux
23+
goarch:
24+
- amd64
25+
main: ./cmd/cfssl
26+
ldflags:
27+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
28+
- id: cfssl-windows
29+
binary: cfssl
30+
env:
31+
- CC=x86_64-w64-mingw32-gcc
32+
- CXX=x86_64-w64-mingw32-g++
33+
goos:
34+
- windows
35+
goarch:
36+
- amd64
37+
main: ./cmd/cfssl
38+
ldflags:
39+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
40+
- id: cfssl-bundle-darwin
41+
binary: cfssl-bundle
42+
env:
43+
- CC=o64-clang
44+
- CXX=o64-clang++
45+
goos:
46+
- darwin
47+
goarch:
48+
- amd64
49+
main: ./cmd/cfssl-bundle
50+
ldflags:
51+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
52+
- id: cfssl-bundle-linux
53+
binary: cfssl-bundle
54+
goos:
55+
- linux
56+
goarch:
57+
- amd64
58+
main: ./cmd/cfssl-bundle
59+
ldflags:
60+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
61+
- id: cfssl-bundle-windows
62+
binary: cfssl-bundle
63+
env:
64+
- CC=x86_64-w64-mingw32-gcc
65+
- CXX=x86_64-w64-mingw32-g++
66+
goos:
67+
- windows
68+
goarch:
69+
- amd64
70+
main: ./cmd/cfssl-bundle
71+
ldflags:
72+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
73+
- id: cfssl-certinfo-darwin
74+
binary: cfssl-certinfo
75+
env:
76+
- CC=o64-clang
77+
- CXX=o64-clang++
78+
goos:
79+
- darwin
80+
goarch:
81+
- amd64
82+
main: ./cmd/cfssl-certinfo
83+
ldflags:
84+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
85+
- id: cfssl-certinfo-linux
86+
binary: cfssl-certinfo
87+
goos:
88+
- linux
89+
goarch:
90+
- amd64
91+
main: ./cmd/cfssl-certinfo
92+
ldflags:
93+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
94+
- id: cfssl-certinfo-windows
95+
binary: cfssl-certinfo
96+
env:
97+
- CC=x86_64-w64-mingw32-gcc
98+
- CXX=x86_64-w64-mingw32-g++
99+
goos:
100+
- windows
101+
goarch:
102+
- amd64
103+
main: ./cmd/cfssl-certinfo
104+
ldflags:
105+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
106+
- id: cfssl-newkey-darwin
107+
binary: cfssl-newkey
108+
env:
109+
- CC=o64-clang
110+
- CXX=o64-clang++
111+
goos:
112+
- darwin
113+
goarch:
114+
- amd64
115+
main: ./cmd/cfssl-newkey
116+
ldflags:
117+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
118+
- id: cfssl-newkey-linux
119+
binary: cfssl-newkey
120+
goos:
121+
- linux
122+
goarch:
123+
- amd64
124+
main: ./cmd/cfssl-newkey
125+
ldflags:
126+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
127+
- id: cfssl-newkey-windows
128+
binary: cfssl-newkey
129+
env:
130+
- CC=x86_64-w64-mingw32-gcc
131+
- CXX=x86_64-w64-mingw32-g++
132+
goos:
133+
- windows
134+
goarch:
135+
- amd64
136+
main: ./cmd/cfssl-newkey
137+
ldflags:
138+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
139+
- id: cfssl-scan-darwin
140+
binary: cfssl-scan
141+
env:
142+
- CC=o64-clang
143+
- CXX=o64-clang++
144+
goos:
145+
- darwin
146+
goarch:
147+
- amd64
148+
main: ./cmd/cfssl-scan
149+
ldflags:
150+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
151+
- id: cfssl-scan-linux
152+
binary: cfssl-scan
153+
goos:
154+
- linux
155+
goarch:
156+
- amd64
157+
main: ./cmd/cfssl-scan
158+
ldflags:
159+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
160+
- id: cfssl-scan-windows
161+
binary: cfssl-scan
162+
env:
163+
- CC=x86_64-w64-mingw32-gcc
164+
- CXX=x86_64-w64-mingw32-g++
165+
goos:
166+
- windows
167+
goarch:
168+
- amd64
169+
main: ./cmd/cfssl-scan
170+
ldflags:
171+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
172+
- id: cfssljson-darwin
173+
binary: cfssljson
174+
env:
175+
- CC=o64-clang
176+
- CXX=o64-clang++
177+
goos:
178+
- darwin
179+
goarch:
180+
- amd64
181+
main: ./cmd/cfssljson
182+
ldflags:
183+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
184+
- id: cfssljson-linux
185+
binary: cfssljson
186+
goos:
187+
- linux
188+
goarch:
189+
- amd64
190+
main: ./cmd/cfssljson
191+
ldflags:
192+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
193+
- id: cfssljson-windows
194+
binary: cfssljson
195+
env:
196+
- CC=x86_64-w64-mingw32-gcc
197+
- CXX=x86_64-w64-mingw32-g++
198+
goos:
199+
- windows
200+
goarch:
201+
- amd64
202+
main: ./cmd/cfssljson
203+
ldflags:
204+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
205+
- id: mkbundle-darwin
206+
binary: mkbundle
207+
env:
208+
- CC=o64-clang
209+
- CXX=o64-clang++
210+
goos:
211+
- darwin
212+
goarch:
213+
- amd64
214+
main: ./cmd/mkbundle
215+
ldflags:
216+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
217+
- id: mkbundle-linux
218+
binary: mkbundle
219+
goos:
220+
- linux
221+
goarch:
222+
- amd64
223+
main: ./cmd/mkbundle
224+
ldflags:
225+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
226+
- id: mkbundle-windows
227+
binary: mkbundle
228+
env:
229+
- CC=x86_64-w64-mingw32-gcc
230+
- CXX=x86_64-w64-mingw32-g++
231+
goos:
232+
- windows
233+
goarch:
234+
- amd64
235+
main: ./cmd/mkbundle
236+
ldflags:
237+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
238+
- id: multirootca-darwin
239+
binary: multirootca
240+
env:
241+
- CC=o64-clang
242+
- CXX=o64-clang++
243+
goos:
244+
- darwin
245+
goarch:
246+
- amd64
247+
main: ./cmd/multirootca
248+
ldflags:
249+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
250+
- id: multirootca-linux
251+
binary: multirootca
252+
goos:
253+
- linux
254+
goarch:
255+
- amd64
256+
main: ./cmd/multirootca
257+
ldflags:
258+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
259+
- id: multirootca-windows
260+
binary: multirootca
261+
env:
262+
- CC=x86_64-w64-mingw32-gcc
263+
- CXX=x86_64-w64-mingw32-g++
264+
goos:
265+
- windows
266+
goarch:
267+
- amd64
268+
main: ./cmd/multirootca
269+
ldflags:
270+
- -s -w -X github.com/cloudflare/cfssl/cli/version.version={{.Version}}
271+
archives:
272+
- format: binary
273+
release:
274+
github:
275+
owner: cloudflare
276+
name: cfssl
277+
prerelease: auto
278+
changelog:
279+
sort: asc

Makefile

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,23 @@ bin/goose: $(shell find . -type f -name '*.go')
3030
.PHONY: clean
3131
clean:
3232
rm -rf bin
33+
34+
# Check that given variables are set and all have non-empty values,
35+
# die with an error otherwise.
36+
#
37+
# Params:
38+
# 1. Variable name(s) to test.
39+
# 2. (optional) Error message to print.
40+
#
41+
# cf: https://stackoverflow.com/questions/10858261/abort-makefile-if-variable-not-set
42+
check_defined = \
43+
$(strip $(foreach 1,$1, \
44+
$(call __check_defined,$1,$(strip $(value 2)))))
45+
__check_defined = \
46+
$(if $(value $1),, \
47+
$(error Undefined $1$(if $2, ($2))))
48+
49+
.PHONY: release
50+
release:
51+
@:$(call check_defined, GITHUB_TOKEN)
52+
docker run -e GITHUB_TOKEN=$(GITHUB_TOKEN) --rm -v $(PWD):/workdir -w /workdir cbroglie/goreleaser-cgo:1.12.12 goreleaser --rm-dist

cli/version/version.go

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,9 @@ import (
88
"github.com/cloudflare/cfssl/cli"
99
)
1010

11-
// Version stores the semantic versioning information for CFSSL.
12-
var version = struct {
13-
Major int
14-
Minor int
15-
Patch int
16-
Revision string
17-
}{1, 3, 4, "release"}
18-
19-
func versionString() string {
20-
return fmt.Sprintf("%d.%d.%d", version.Major, version.Minor, version.Patch)
21-
}
11+
var (
12+
version = "dev"
13+
)
2214

2315
// Usage text for 'cfssl version'
2416
var versionUsageText = `cfssl version -- print out the version of CF SSL
@@ -29,7 +21,7 @@ Usage of version:
2921

3022
// FormatVersion returns the formatted version string.
3123
func FormatVersion() string {
32-
return fmt.Sprintf("Version: %s\nRevision: %s\nRuntime: %s\n", versionString(), version.Revision, runtime.Version())
24+
return fmt.Sprintf("Version: %s\nRuntime: %s\n", version, runtime.Version())
3325
}
3426

3527
// The main functionality of 'cfssl version' is to print out the version info.

cli/version/version_dev.go

Lines changed: 0 additions & 7 deletions
This file was deleted.

cli/version/version_test.go

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,6 @@ import (
66
"github.com/cloudflare/cfssl/cli"
77
)
88

9-
func TestVersionString(t *testing.T) {
10-
version := versionString()
11-
if version != "1.3.4" {
12-
t.Fatal("version string is not returned correctly")
13-
}
14-
}
15-
169
func TestVersionMain(t *testing.T) {
1710
args := []string{"cfssl", "version"}
1811
err := versionMain(args, cli.Config{})

0 commit comments

Comments
 (0)