1
- version : 2
1
+ version : 2.1
2
2
jobs :
3
- frontend :
3
+ build_node :
4
+ resource_class : medium
4
5
docker :
5
6
- image : cimg/node:lts
6
7
steps :
18
19
paths :
19
20
- frontend/dist/*
20
21
21
- backend :
22
+ test_go :
23
+ resource_class : medium
22
24
docker :
23
25
- image : cimg/go:1.20.2
24
26
steps :
@@ -28,81 +30,83 @@ jobs:
28
30
- run : go get -v -t -d ./...
29
31
- run : go test -v -covermode=count -coverprofile=count.out ./...
30
32
- run : go tool cover -html=count.out -o coverage.html
31
- - run :
32
- working_directory : cmd/ssl-game-controller
33
- command : |
34
- GOOS=linux GOARCH=amd64 go build -o ../../release/ssl-game-controller_linux_amd64
35
- GOOS=darwin GOARCH=amd64 go build -o ../../release/ssl-game-controller_darwin_amd64
36
- GOOS=windows GOARCH=amd64 go build -o ../../release/ssl-game-controller_windows_amd64.exe
33
+ - store_artifacts :
34
+ path : coverage.html
35
+ destination : coverage
36
+
37
+ build_go :
38
+ resource_class : large
39
+ docker :
40
+ - image : cimg/go:1.20.2
41
+ steps :
42
+ - checkout
43
+ - attach_workspace :
44
+ at : .
45
+ - run : go get -v -t -d ./...
46
+ - run : |
47
+ set -u
48
+ version=${CIRCLE_TAG:-}
49
+ for cmd in ssl-game-controller ssl-ref-client; do
50
+ GOOS=linux GOARCH=amd64 go build -o ./release/${cmd}_${version}_linux_amd64 ./cmd/${cmd}
51
+ GOOS=linux GOARCH=arm64 go build -o ./release/${cmd}_${version}_linux_arm64 ./cmd/${cmd}
52
+ GOOS=linux GOARCH=arm go build -o ./release/${cmd}_${version}_linux_arm ./cmd/${cmd}
53
+ GOOS=darwin GOARCH=amd64 go build -o ./release/${cmd}_${version}_darwin_amd64 ./cmd/${cmd}
54
+ GOOS=darwin GOARCH=arm64 go build -o ./release/${cmd}_${version}_darwin_arm64 ./cmd/${cmd}
55
+ GOOS=windows GOARCH=amd64 go build -o ./release/${cmd}_${version}_windows_amd64.exe ./cmd/${cmd}
56
+ done
37
57
- persist_to_workspace :
38
58
root : .
39
59
paths :
40
60
- release/*
41
- - store_artifacts :
42
- path : coverage.html
43
- destination : coverage
44
61
45
- publish-github-release :
62
+ publish_gh :
63
+ resource_class : small
46
64
docker :
47
65
- image : cimg/go:1.20.2
48
66
steps :
49
67
- attach_workspace :
50
68
at : .
51
- - run :
52
- name : " Prepare artifacts"
53
- working_directory : release
54
- command : |
55
- mkdir gh
56
- cp ssl-game-controller_linux_amd64 gh/ssl-game-controller_${CIRCLE_TAG}_linux_amd64
57
- cp ssl-game-controller_darwin_amd64 gh/ssl-game-controller_${CIRCLE_TAG}_darwin_amd64
58
- cp ssl-game-controller_windows_amd64.exe gh/ssl-game-controller_${CIRCLE_TAG}_windows_amd64.exe
59
- - run :
60
- name : " Publish Release on GitHub"
61
- command : |
62
- go install github.com/tcnksm/[email protected]
63
- ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -delete ${CIRCLE_TAG} ./release/gh/
69
+ - run : |
70
+ set -u
71
+ go install github.com/tcnksm/[email protected]
72
+ ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -delete ${CIRCLE_TAG} ./release
64
73
65
74
docker :
75
+ resource_class : small
66
76
docker :
67
77
- image : cimg/base:2023.04
68
78
steps :
69
79
- checkout
70
80
- setup_remote_docker :
71
81
version : 20.10.18
72
82
- run : |
73
- TAG=${CIRCLE_TAG:1}
83
+ TAG=${CIRCLE_TAG:- 1}
74
84
TAG=${TAG:-latest}
75
85
docker build -t robocupssl/ssl-game-controller:$TAG .
76
86
docker login -u "${DOCKER_HUB_USERNAME}" -p "${DOCKER_HUB_PASSWORD}"
77
87
docker push robocupssl/ssl-game-controller:$TAG
78
88
79
89
workflows :
80
90
version : 2
81
- main :
91
+ build :
92
+ jobs :
93
+ - build_node
94
+ - test_go :
95
+ requires : [ build_node ]
96
+ release :
97
+ when :
98
+ matches : { pattern: /^v.*/ , value: << pipeline.git.tag >> }
99
+ jobs :
100
+ - build_node
101
+ - build_go :
102
+ requires : [ build_node ]
103
+ - publish_gh :
104
+ requires : [ build_go ]
105
+ docker :
106
+ when :
107
+ or :
108
+ - matches : { pattern: /^v.*/ , value: << pipeline.git.tag >> }
109
+ - matches : { pattern: 'master' , value: << pipeline.git.branch >> }
82
110
jobs :
83
- - frontend :
84
- filters :
85
- tags :
86
- only : /.*/
87
- - backend :
88
- requires :
89
- - frontend
90
- filters :
91
- tags :
92
- only : /.*/
93
- - publish-github-release :
94
- context : github
95
- requires :
96
- - backend
97
- filters :
98
- branches :
99
- ignore : /.*/
100
- tags :
101
- only : /^v.*/
102
111
- docker :
103
112
context : docker hub
104
- filters :
105
- branches :
106
- only : master
107
- tags :
108
- only : /^v.*/
0 commit comments