11version : 2
2- get_common_build_num : &get_common_build_num
3- name : Export commond build number
4- command : echo "export COMMON_BUILD_NUM=$(cat /tmp/workspace/build)" >> $BASH_ENV
52jobs :
6- set_common_build_number :
7- docker :
8- - image : buildpack-deps:jessie
9- steps :
10- - run :
11- name : Write build number
12- command : echo "${CIRCLE_BUILD_NUM}" > build
13- - persist_to_workspace :
14- root : .
15- paths :
16- - build
17- build_and_push_db :
3+ build_and_push :
184 machine :
195 image : circleci/classic:latest
206 environment :
217 SBT_VERSION_TAG : sbt-0.13.15_mongo-3.2.17_node-8.x_jdk-8
228 USER_UID : 1001
239 USER_GID : 1001
24- TARGET_DIR : &target_dir target/scala-2.12
10+ TARGET_DIR : target/scala-2.12
2511 steps :
2612 - checkout
27- - attach_workspace :
28- at : /tmp/workspace
29- - run : *get_common_build_num
3013 - run :
3114 name : Prepare dependency folders
3215 command : mkdir -p ~/.m2 ~/.ivy2 ~/.sbt
16+
3317 - restore_cache :
3418 key : cache-{{ .Branch }}
3519 - run :
@@ -38,127 +22,74 @@ jobs:
3822 - run :
3923 name : Get FossilDB version
4024 command : docker-compose run sbt java -jar $TARGET_DIR/fossildb.jar --version > $TARGET_DIR/version
41- - persist_to_workspace :
42- root : *target_dir
43- paths :
44- - fossildb.jar
45- - version
4625 - save_cache :
4726 key : cache-{{ .Branch }}
4827 paths :
4928 - " ~/.m2"
5029 - " ~/.ivy2"
5130 - " ~/.sbt"
31+
5232 - run :
5333 name : Build server docker image
5434 command : |
5535 docker build \
56- -t scalableminds/fossildb:${CIRCLE_BRANCH}__${COMMON_BUILD_NUM } \
36+ -t scalableminds/fossildb:${CIRCLE_BRANCH}__${CIRCLE_BUILD_NUM } \
5737 -t scalableminds/fossildb:${CIRCLE_BRANCH} \
5838 .
59- - run :
60- name : Push to DockerHub
61- command : |
62- echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
63- docker push scalableminds/fossildb:${CIRCLE_BRANCH}__${COMMON_BUILD_NUM}
64- docker push scalableminds/fossildb:${CIRCLE_BRANCH}
65- docker logout
66- build_and_push_client :
67- machine :
68- image : circleci/classic:latest
69- steps :
70- - checkout
71- - attach_workspace :
72- at : /tmp/workspace
73- - run : *get_common_build_num
7439 - run :
7540 name : Build client docker image
7641 command : |
7742 docker build \
7843 -f client/Dockerfile \
79- -t scalableminds/fossildb-client:${CIRCLE_BRANCH}__${COMMON_BUILD_NUM } \
44+ -t scalableminds/fossildb-client:${CIRCLE_BRANCH}__${CIRCLE_BUILD_NUM } \
8045 -t scalableminds/fossildb-client:${CIRCLE_BRANCH} \
8146 .
47+
8248 - run :
83- name : Push to DockerHub
49+ name : Smoke test
8450 command : |
85- echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
86- docker push scalableminds/fossildb-client:${CIRCLE_BRANCH}__${COMMON_BUILD_NUM}
87- docker push scalableminds/fossildb-client:${CIRCLE_BRANCH}
88- docker logout
89- smoketest :
90- machine :
91- image : circleci/classic:latest
92- steps :
93- - checkout
94- - attach_workspace :
95- at : /tmp/workspace
96- - run : *get_common_build_num
51+ FOSSILDB_TAG=${CIRCLE_BRANCH}__${CIRCLE_BUILD_NUM} \
52+ docker-compose up -d fossildb
53+ sleep 1
54+ FOSSILDB_TAG=${CIRCLE_BRANCH}__${CIRCLE_BUILD_NUM} \
55+ FOSSILDB_CLIENT_TAG=${CIRCLE_BRANCH}__${CIRCLE_BUILD_NUM} \
56+ docker-compose run fossildb-health-check
57+ docker-compose down
58+
9759 - run :
98- name : Pull from DockerHub
60+ name : Push to Dockerhub
9961 command : |
10062 echo $DOCKER_PASS | docker login -u $DOCKER_USER --password-stdin
101- docker pull scalableminds/fossildb:${CIRCLE_BRANCH}__${COMMON_BUILD_NUM}
102- docker pull scalableminds/fossildb-client:${CIRCLE_BRANCH}__${COMMON_BUILD_NUM}
63+ docker push scalableminds/fossildb:${CIRCLE_BRANCH}__${CIRCLE_BUILD_NUM}
64+ docker push scalableminds/fossildb:${CIRCLE_BRANCH}
65+ docker push scalableminds/fossildb-client:${CIRCLE_BRANCH}__${CIRCLE_BUILD_NUM}
66+ docker push scalableminds/fossildb-client:${CIRCLE_BRANCH}
10367 docker logout
104- - run :
105- name : Start fossildb
106- command : >
107- FOSSILDB_TAG=${CIRCLE_BRANCH}__${COMMON_BUILD_NUM}
108- docker-compose up -d fossildb
109- - run :
110- name : Wait a second
111- command : sleep 1
112- - run :
113- name : Check health endpoint
114- command : >
115- FOSSILDB_CLIENT_TAG=${CIRCLE_BRANCH}__${COMMON_BUILD_NUM}
116- docker-compose run fossildb-health-check
117- release_on_github :
118- docker :
119- - image : golang:1.9
120- steps :
121- - attach_workspace :
122- at : /tmp/workspace
123- - checkout
124- - run :
125- name : Install ghr
126- command : go get github.com/tcnksm/ghr
68+
12769 - run :
12870 name : Show version
129- command : cat /tmp/workspace /version
71+ command : cat $TARGET_DIR /version
13072 - run :
131- name : Release jar on Github
132- command : >
133- ghr
134- -t $GITHUB_TOKEN
135- -u scalableminds
136- -r fossildb
137- -c $(git rev-parse HEAD)
138- -b "executable jar of __FossilDB__"
139- $(cat /tmp/workspace/version | tr -d [:space:])
140- /tmp/workspace/fossildb.jar
73+ name : Release JAR on Github
74+ command : |
75+ if [ "${CIRCLE_BRANCH}" == "master" ]; then
76+ sudo add-apt-repository ppa:gophers/archive
77+ sudo apt-get update
78+ sudo apt-get install -y golang-1.10-go
79+ go get github.com/tcnksm/ghr
80+
81+ ghr \
82+ -t $GITHUB_TOKEN \
83+ -u scalableminds \
84+ -r fossildb \
85+ -c $(git rev-parse HEAD) \
86+ -b "Executable JAR of __FossilDB__" \
87+ $(cat $TARGET_DIR/version | tr -d [:space:]) \
88+ $TARGET_DIR/fossildb.jar
89+ fi
14190
14291workflows :
14392 version : 2
14493 default :
14594 jobs :
146- - set_common_build_number
147- - build_and_push_db :
148- requires :
149- - set_common_build_number
150- - build_and_push_client :
151- requires :
152- - set_common_build_number
153- - smoketest :
154- requires :
155- - set_common_build_number
156- - build_and_push_db
157- - build_and_push_client
158- - release_on_github :
159- filters :
160- branches :
161- only : master
162- requires :
163- - build_and_push_db
164- - smoketest
95+ - build_and_push
0 commit comments