4
4
golang : cci-orb/golang@volatile
5
5
codecov :
codecov/[email protected]
6
6
7
+ command_vars :
8
+ - cache_key : &cache_key gomod-<< parameters.go-version >>-{{ checksum "go.mod" }}-{{ checksum "go.sum" }}
9
+ - cache_tools_key : &cache_tools_key tools-<< parameters.go-version >>-{{ checksum "tools/go.mod" }}-{{ checksum "tools/go.sum" }}
10
+
7
11
commands :
8
- parse_goflags :
12
+ restore_dependencies :
13
+ parameters :
14
+ go-version :
15
+ type : string
16
+ steps :
17
+ - restore_cache :
18
+ name : " Restore module dependencies cache"
19
+ keys :
20
+ - *cache_key
21
+ - restore_cache :
22
+ name : " Restore dependencies tools"
23
+ keys :
24
+ - *cache_tools_key
25
+ - run :
26
+ name : " Download project modules"
27
+ command : |
28
+ go mod download
29
+
30
+ save_dependencies :
31
+ parameters :
32
+ go-version :
33
+ type : string
34
+ steps :
35
+ - save_cache :
36
+ name : " Save module cache"
37
+ key : *cache_key
38
+ paths :
39
+ - /go/pkg/mod/cache
40
+ - save_cache :
41
+ name : " Save dependencies tools"
42
+ key : *cache_tools_key
43
+ paths :
44
+ - /go/bin/
45
+ - run :
46
+ name : " go mod vendor"
47
+ command : |
48
+ go mod vendor
49
+
50
+ setup :
51
+ steps :
52
+ - checkout
53
+ - run :
54
+ name : Check versions
55
+ command : |
56
+ go version
57
+ go env
58
+ - run :
59
+ name : " Parse CPUs"
60
+ command : |
61
+ # https://circleci.com/changelog#container-cgroup-limits-now-visible-inside-the-docker-executor
62
+ CPUS="$(echo $(($(cat /sys/fs/cgroup/cpu/cpu.shares) / 1024)))"
63
+ echo "export CPUS=${CPUS}" >> $BASH_ENV
64
+
65
+ install_tools :
66
+ steps :
67
+ - run :
68
+ name : " Download project tool dependencies"
69
+ command : |
70
+ if [ -z $(find /go/bin/ -mindepth 1 -type f -executable | head -1) ]; then
71
+ make -j${CPUS} tools GOBIN=/go/bin
72
+ fi
73
+
74
+ set_goflags :
9
75
steps :
10
76
- run :
11
77
name : " Parse CPUs"
12
78
command : |
13
- CPUS="$(make env/JOBS)"
14
79
echo "export GOFLAGS='-p=${CPUS} -cpu=${CPUS}'" >> $BASH_ENV
15
80
16
81
jobs :
@@ -26,47 +91,24 @@ jobs:
26
91
working_directory : /go/src/go.lsp.dev/jsonrpc2
27
92
resource_class : xlarge
28
93
steps :
29
- - checkout
30
- - run :
31
- name : Check versions
32
- command : |
33
- go version
34
- go env
35
- - restore_cache :
36
- name : Restore Go modules cache
37
- key : ' gomod-<< parameters.go-version >>-{{ checksum "go.mod" }}-{{ checksum "go.sum" }}'
94
+ - restore_dependencies :
95
+ go-version : << parameters.go-version >>
96
+ - install_tools
97
+ - save_dependencies :
98
+ go-version : << parameters.go-version >>
99
+ - set_goflags
38
100
- run :
39
- name : Download Go module dependencies
40
- command : |
41
- go mod download
42
- - save_cache :
43
- name : Save Go modules cache
44
- key : ' gomod-<< parameters.go-version >>-{{ checksum "go.mod" }}-{{ checksum "go.sum" }}'
45
- paths :
46
- - /go/pkg/mod/cache
47
- - run :
48
- name : Run go mod vendor
49
- command : |
50
- go mod vendor
51
- - parse_goflags
52
- - run :
53
- name : Test and collect coverages
101
+ name : Test and take a coverage
54
102
environment :
55
- # https://github.com/gotestyourself/gotestsum#format
56
103
GOTESTSUM_FORMAT : standard-verbose
57
- # https://github.com/gotestyourself/gotestsum#junit-xml
58
104
GOTESTSUM_JUNITFILE : /tmp/test-results/tests.xml
59
- # https://github.com/gotestyourself/gotestsum#finding-and-skipping-slow-tests
60
105
GOTESTSUM_JSONFILE : /tmp/test-results/tests.json
61
106
command : |
62
107
mkdir -p /tmp/test-results
63
108
make coverage
64
109
- codecov/upload :
65
110
file : " coverage.out"
66
- - store_test_results :
67
- path : /tmp/test-results
68
- - store_artifacts :
69
- path : /tmp/test-results
111
+ when : on_success
70
112
71
113
lint :
72
114
parameters :
@@ -80,13 +122,11 @@ jobs:
80
122
working_directory : /go/src/go.lsp.dev/jsonrpc2
81
123
resource_class : large
82
124
steps :
83
- - checkout
84
- - golang/gomod
85
- - run :
86
- name : Check versions
87
- command : |
88
- go version
89
- go env
125
+ - restore_dependencies :
126
+ go-version : << parameters.go-version >>
127
+ - install_tools
128
+ - save_dependencies :
129
+ go-version : << parameters.go-version >>
90
130
- run :
91
131
name : Run fmt and lint for sources
92
132
command : |
@@ -102,9 +142,18 @@ workflows:
102
142
matrix :
103
143
parameters :
104
144
go-version : ["1.15-buster", "1.16-rc-buster"]
145
+ pre-steps :
146
+ - setup
147
+ post-steps :
148
+ - store_test_results :
149
+ path : /tmp/test-results
150
+ - store_artifacts :
151
+ path : /tmp/test-results
105
152
106
153
- lint :
107
154
context : org-global
108
155
matrix :
109
156
parameters :
110
157
go-version : ["1.15-buster"]
158
+ pre-steps :
159
+ - setup
0 commit comments