1
1
version : 2
2
- jobs :
3
- lint :
4
- docker :
5
- - image : circleci/golang
6
- steps :
7
- - checkout
8
- - restore_cache :
9
- keys :
10
- - lint-cache
11
- - run :
12
- name : Check goimports
13
- command : |
14
- files=$(go run golang.org/x/tools/cmd/goimports -l -local "github.com/G-Research" .)
15
- if [[ $files != "" ]]; then
16
- echo "Files need goimports running on them:"
17
- echo "$files"
18
- exit 1
19
- fi
20
- - save_cache :
21
- key : lint-cache
22
- paths :
23
- - " /go/pkg"
24
2
25
- build :
26
- docker :
27
- - image : circleci/golang:1.12.5
28
- working_directory : /go/src/github.com/G-Research/geras
29
- environment :
30
- GO111MODULE : ' on'
31
- GOBIN : " /go/bin"
32
- SOURCE_IMAGE : g-research/geras
33
- IMAGE_NAME : docker.pkg.github.com/g-research/geras/autobuild
34
- steps :
35
- - checkout
36
- - restore_cache :
37
- keys :
38
- - pkg-cache
39
- - run :
40
- name : Build geras binary
41
- command : go build ./cmd/geras
42
- - run :
43
- name : Run unit tests
44
- command : go test ./...
45
- - run :
46
- name : Check flags are documented
47
- command : test/flags-doc.sh
48
-
49
- # Create a docker environment we can use to build docker images
50
- # See https://circleci.com/docs/2.0/building-docker-images/
51
- - setup_remote_docker :
52
- docker_layer_caching : true
53
-
54
- - run :
55
- name : Docker build
56
- command : |
57
- set -x
58
- extra=
59
- if [[ "$CIRCLE_TAG" != "" ]]; then
60
- extra="--build-arg GERAS_VERSION=$CIRCLE_TAG"
61
- branch=$CIRCLE_TAG
62
- else
63
- branch=$CIRCLE_BRANCH
64
- fi
65
- docker build -t g-research/geras:$branch --build-arg GIT_REVISION="$CIRCLE_SHA1" --build-arg GIT_BRANCH="$branch" --build-arg BUILD_USER="circleci" $extra .
66
-
67
- - run :
68
- name : Docker run without flags
69
- command : |
70
- if [[ -n $CIRCLE_TAG ]]; then
71
- branch=$CIRCLE_TAG
72
- else
73
- branch=$CIRCLE_BRANCH
74
- fi
75
- set +e
76
- docker run -t g-research/geras:$branch
77
- exit=$?
78
- # No flags; so expect help output. Also puts the version output into the CircleCI log
79
- if [[ $exit != 1 ]]; then
80
- echo "Unexpected exit code: $exit"
81
- exit 1
82
- fi
83
- exit 0
84
-
85
- - run :
86
- name : Docker compose and test basic query
87
- command : cd test && ./test-query.sh
88
-
89
- - run :
90
- name : Push autobuild Docker image
91
- command : |
92
- echo "$GITHUB_DOCKER_TOKEN" | docker login docker.pkg.github.com -u "$GITHUB_DOCKER_USER" --password-stdin
93
- set -x
94
- if [[ $CIRCLE_TAG != "" ]]; then
95
- branch=$CIRCLE_TAG
96
- else
97
- branch=$CIRCLE_BRANCH
98
- fi
99
- if [[ $CIRCLE_TAG == "" ]] && [[ $CIRCLE_BRANCH != "master" ]]; then
100
- echo "Not on a tag or master, skipped."
101
- exit 0
102
- fi
103
- docker tag $SOURCE_IMAGE:$branch $IMAGE_NAME:$branch
104
- docker push $IMAGE_NAME:$branch
105
-
106
- - save_cache :
107
- key : pkg-cache
108
- paths :
109
- - " /go/pkg"
110
-
111
- docker_release :
112
- docker :
113
- - image : circleci/golang:1.12.5
114
- environment :
115
- SOURCE_IMAGE : docker.pkg.github.com/g-research/geras/autobuild
116
- IMAGE_NAME : docker.pkg.github.com/g-research/geras/geras
117
- steps :
118
- - checkout
119
- - setup_remote_docker
120
- - run :
121
- name : Release tagged commit as release Docker image
122
- command : |
123
- echo "$GITHUB_DOCKER_TOKEN" | docker login docker.pkg.github.com -u "$GITHUB_DOCKER_USER" --password-stdin
124
- set -x
125
- tag=$CIRCLE_TAG
126
- if [[ $tag == "" ]]; then
127
- echo "No tag found"
128
- exit 1
129
- fi
130
- docker pull $SOURCE_IMAGE:$tag
131
- docker pull $IMAGE_NAME:$tag || true
132
- existing=$(docker images -q $IMAGE_NAME:$tag)
133
- if [[ $existing != "" ]]; then
134
- echo "Tag already exists, not overwriting"
135
- exit 1
136
- fi
137
- docker tag $SOURCE_IMAGE:$tag $IMAGE_NAME:$tag
138
- docker push $IMAGE_NAME:$tag
3
+ jobs : {}
139
4
140
5
workflows :
141
6
version : 2
142
-
143
- build-deploy :
144
- jobs :
145
- - lint
146
- - build :
147
- # Runs on all branches and tags matching /v.*/
148
- filters :
149
- tags :
150
- only : /v.*/
151
- - docker_release :
152
- requires :
153
- - build
154
- # Only run on tags matching /v.*/
155
- filters :
156
- branches :
157
- ignore : /.*/
158
- tags :
159
- only : /v.*/
0 commit comments