1
1
image : golang:latest
2
2
3
3
stages :
4
+ - prebuild
4
5
- build
5
6
- test
6
7
- deploy
@@ -15,42 +16,60 @@ before_script:
15
16
- mkdir -p .gopath/bin
16
17
- export GOPATH=$(pwd)/.gopath
17
18
- export PATH=$GOPATH/bin:$PATH
18
- - go get github.com/aktau/github-release
19
- build :
19
+ - |
20
+ [ "${CI_COMMIT_TAG:-x}" != "x" ] && VER=${CI_COMMIT_TAG} || VER=${CI_COMMIT_SHORT_SHA}
21
+
22
+ .build_job_template : &build_job_definition
23
+ stage : build
20
24
artifacts :
21
25
expire_in : 1 week
22
26
paths :
23
27
- binaries
24
- stage : build
28
+
29
+ .os_build_job_template : &os_build_job_definition
30
+ << : *build_job_definition
25
31
script :
26
- - export GOARCH=amd64
27
32
- declare -A extensions=()
28
33
- extensions["windows"]=".exe"
29
- - |
30
- [ "${CI_COMMIT_TAG:-x}" != "x" ] && VER=${CI_COMMIT_TAG} || VER=${CI_COMMIT_SHORT_SHA}
31
- - |
32
- [ "${CI_COMMIT_TAG:-x}" != "x" ] && TAG=latest || VER=nightly
34
+ - go build -o gql"${extensions[${GOOS}]}" main.go
35
+ - tar zcf gql-${GOOS}-${GOARCH}-${VER}.tar.gz gql
33
36
- mkdir binaries
34
- - |
35
- for os in linux windows darwin; do
36
- GOOS=$os go build -o gql"${extensions[${os}]}" main.go
37
- tar zcf gql-${os}-${GOARCH}-${VER}.tar.gz gql
38
- tar zcf gql-${os}-${GOARCH}-${TAG}.tar.gz gql
39
- done
40
- - mv gql-*.tar.gz binaries
37
+ - mv gql-${GOOS}-${GOARCH}-${VER}.tar.gz binaries
38
+
39
+ prebuild :
40
+ stage : prebuild
41
+ script :
42
+ - go mod download
43
+
44
+ build:linux:amd64 :
45
+ variables :
46
+ GOOS : linux
47
+ GOARCH : amd64
48
+ << : *os_build_job_definition
49
+
50
+ build:darwin:amd64 :
51
+ variables :
52
+ GOOS : darwin
53
+ GOARCH : amd64
54
+ << : *os_build_job_definition
55
+
56
+ build:windows:amd64 :
57
+ variables :
58
+ GOOS : windowns
59
+ GOARCH : amd64
60
+ << : *os_build_job_definition
41
61
42
62
test :
43
- stage : build
63
+ stage : test
44
64
script :
45
65
- go test ./...
46
66
47
67
deploy :
48
68
stage : deploy
49
- dependencies :
50
- - build
51
69
only :
52
70
- tags
53
71
script :
72
+ - go get github.com/aktau/github-release
54
73
- |
55
74
github-release release \
56
75
--user slothking-online \
0 commit comments