-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathcircle.yml
130 lines (125 loc) · 6.26 KB
/
circle.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
---
## test machine configuration
machine:
pre:
- curl -sSL https://s3.amazonaws.com/circle-downloads/install-circleci-docker.sh | bash -s -- 1.10.0
# cp workaround from https://discuss.circleci.com/t/unable-to-use-docker-cp-but-it-worked-2-days-ago/1137/9
# - echo 'DOCKER_OPTS="-s btrfs -e lxc -D --userland-proxy=false"' | sudo tee -a /etc/default/docker
# - sudo curl -L -o /usr/bin/docker 'https://s3-external-1.amazonaws.com/circle-downloads/docker-1.9.1-circleci-cp-workaround'
# - sudo chmod 0755 /usr/bin/docker
python:
version: 2.7.10
node:
version: 4.2.6
services:
- docker
# environment variables
environment:
# build output dirs
LOG_DIR: $CIRCLE_ARTIFACTS/logs
DJANGO_DIR: $CIRCLE_TEST_REPORTS/django
# build_images support
GS_PROJ_TOP_DIR: $HOME/goldstone-server
# Docker image directories for staging
DOCKER_DIR: $GS_PROJ_TOP_DIR/docker
STAGE_APP: $DOCKER_DIR/goldstone-app
STAGE_DB: $DOCKER_DIR/goldstone-db
STAGE_LOG: $DOCKER_DIR/goldstone-log
STAGE_SEARCH: $DOCKER_DIR/goldstone-search
STAGE_TASK: $DOCKER_DIR/goldstone-task
STAGE_TASKQ: $DOCKER_DIR/goldstone-task-queue
STAGE_WEB: $DOCKER_DIR/goldstone-web
# Docker runtime args
COMPOSE_CONF: $DOCKER_DIR/docker-compose-ci.yml
# /etc/hosts
hosts:
gsapp: 127.0.0.1
gsdb: 127.0.0.1
gsdbdvc: 127.0.0.1
gslog: 127.0.0.1
gssearch: 127.0.0.1
gstask: 127.0.0.1
gstaskq: 127.0.0.1
gsweb: 127.0.0.1
## custom checkout
checkout:
post:
- git submodule init
- git submodule update
## custom dependencies
dependencies:
pre:
- mkdir -p {$LOG_DIR,$DJANGO_DIR} # create output directories
- sudo service postgresql stop # stop default postgresql service
- sudo service redis-server stop # stop default redis-server service
- pip install -U pip setuptools virtualenv # circleci env fix, if specifying python version
- sudo pip install docker-compose # circleci env fix, install docker-compose
- pip install -r docker/goldstone-base/config/requirements.txt
- pip install -r docker/goldstone-base/config/test-requirements.txt
- docker info && docker-compose version
override:
- bin/bump_images.sh
- bin/build_images.sh --docker-vm=false
- npm install && npm install -g grunt-cli # client js test reqs
post:
- docker images
## test config
test:
pre:
- docker-compose -f $COMPOSE_CONF --project-name gs up:
background: true
- sleep 60 && docker-compose -f $COMPOSE_CONF --project-name gs ps
- docker run -it --net=gs_default --volume=${DJANGO_DIR}:/reports --link=gs_gsdb_1:gsdb --link=gs_gssearch_1:gssearch --link=gs_gstaskq_1:gstaskq -p 8000:8000 --entrypoint=bash gs-docker-ent.bintray.io/goldstone-app-e:`bin/semver.sh full` -c ". /venv/bin/activate && pip freeze > /reports/pip-freeze.txt"
override:
- docker run -it --net=gs_default --volume=${DJANGO_DIR}:/reports --link=gs_gsdb_1:gsdb --link=gs_gssearch_1:gssearch --link=gs_gstaskq_1:gstaskq -p 8000:8000 --entrypoint=bash gs-docker-ent.bintray.io/goldstone-app-e:`bin/semver.sh full` -c ". /venv/bin/activate && pip install -r /home/app/config/test-requirements.txt && COVERAGE_FILE=/reports/coverage coverage run --source='./goldstone' --omit='./goldstone/settings/*,*/test*' manage.py test --settings=goldstone.settings.ci"
- docker run -it --net=gs_default --volume=${DJANGO_DIR}:/reports --link=gs_gsdb_1:gsdb --link=gs_gssearch_1:gssearch --link=gs_gstaskq_1:gstaskq -p 8000:8000 --entrypoint=bash gs-docker-ent.bintray.io/goldstone-app-e:`bin/semver.sh full` -c ". /venv/bin/activate && pip install -r /home/app/config/test-requirements.txt && COVERAGE_FILE=/reports/coverage coverage xml -o /reports/coverage.xml"
- pylint goldstone | tee $CIRCLE_TEST_REPORTS/django/pylint-goldstone.txt
- pep8 | tee $CIRCLE_TEST_REPORTS/django/pep8.txt
- grunt lint
- grunt karma
post:
- docker-compose -f $COMPOSE_CONF --project-name gs stop
- pip install codecov && codecov -f ${DJANGO_DIR}/coverage.xml
# TODO: uncomment when priv env logon is added to solinea/goldstone-server
#- docker login -u $DOCKER_USER -p $DOCKER_PASS -e $DOCKER_EMAIL gs-docker-oss.bintray.io
## deployment config
deployment:
release:
# pattern of 1, 1.2, 1.2.3
tag: /[0-9]+(\.[0-9]+)*/
commands:
- echo "stable, $CIRCLE_TAG"
# TODO: replace with full tag/push when merged with solinea/goldstone-server
#- docker tag goldstone-app gs-docker-oss.bintray.io/app:$CIRCLE_BRANCH
#- docker tag goldstone-app gs-docker-oss.bintray.io/app:stable
#- docker push gs-docker-oss.bintray.io/app:$CIRCLE_BRANCH
#- docker push gs-docker-oss.bintray.io/app:stable
latest:
branch: master
commands:
- mkdir -p $CIRCLE_ARTIFACTS/ubuntu $CIRCLE_ARTIFACTS/redhat
- docker info
- docker build -t gss.rpm -f rpm_packaging/Dockerfile.rpm .
- docker run --name gss-rpm gss.rpm make rpm_native
- docker cp gss-rpm:/tmp/goldstone-server/`bin/semver.sh rpmname goldstone-server` $CIRCLE_ARTIFACTS/redhat/
- docker run --name gsse-rpm gss.rpm make gse_native
- docker cp gsse-rpm:/tmp/goldstone-server/`bin/semver.sh rpmname goldstone-server-enterprise` $CIRCLE_ARTIFACTS/redhat/
# TODO: replace with full tag/push when merged with solinea/goldstone-server
#- docker tag goldstone-app gs-docker-oss.bintray.io/app:latest
#- docker tag goldstone-app gs-docker-oss.bintray.io/app:$CIRCLE_BRANCH-${CIRCLE_SHA1:0:7}
#- docker push gs-docker-oss.bintray.io/app:latest
#- docker push gs-docker-oss.bintray.io/app:$CIRCLE_BRANCH-${CIRCLE_SHA1:0:7}
dev:
branch: /.*/
commands:
- mkdir -p $CIRCLE_ARTIFACTS/ubuntu $CIRCLE_ARTIFACTS/redhat
- docker info
- docker build -t gss.rpm -f rpm_packaging/Dockerfile.rpm .
- docker run --name gss-rpm gss.rpm make rpm_native
- docker cp gss-rpm:/tmp/goldstone-server/`bin/semver.sh rpmname goldstone-server` $CIRCLE_ARTIFACTS/redhat/
- docker run --name gsse-rpm gss.rpm make gse_native
- docker cp gsse-rpm:/tmp/goldstone-server/`bin/semver.sh rpmname goldstone-server-enterprise` $CIRCLE_ARTIFACTS/redhat/
general:
artifacts:
- $CIRCLE_ARTIFACTS
- $CIRCLE_TEST_REPORTS