forked from mozilla/addons-server
-
Notifications
You must be signed in to change notification settings - Fork 0
/
circle.yml
116 lines (114 loc) · 3.76 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
version: 2.0
jobs:
build-deploy: # build for the master branch
machine: true
working_directory: ~/addons-server
steps:
- checkout
- run: >
printf '{"commit":"%s","version":"%s","source":"https://github.com/%s/%s","build":"%s"}\n'
"$CIRCLE_SHA1"
"$CIRCLE_TAG"
"$CIRCLE_PROJECT_USERNAME"
"$CIRCLE_PROJECT_REPONAME"
"$CIRCLE_BUILD_URL"
> version.json
- run:
name: Build docker image and push to repo
command: |
docker version
docker build -t app:build -f Dockerfile.deploy .
docker tag app:build ${DOCKERHUB_REPO}:latest
docker login -u $DOCKERHUB_USER -p $DOCKERHUB_PASS
docker push ${DOCKERHUB_REPO}:latest
build-release: # build for releases (tags)
machine: true
working_directory: ~/addons-server
steps:
- checkout
- run: >
printf '{"commit":"%s","version":"%s","source":"https://github.com/%s/%s","build":"%s"}\n'
"$CIRCLE_SHA1"
"$CIRCLE_TAG"
"$CIRCLE_PROJECT_USERNAME"
"$CIRCLE_PROJECT_REPONAME"
"$CIRCLE_BUILD_URL"
> version.json
- run:
name: Build docker image and push to repo
command: |
docker version
docker build -t app:build -f Dockerfile.deploy .
docker tag app:build ${DOCKERHUB_REPO}:${CIRCLE_TAG}
docker login -u $DOCKERHUB_USER -p $DOCKERHUB_PASS
docker push ${DOCKERHUB_REPO}:${CIRCLE_TAG}
integration_test:
working_directory: ~/addons-server
machine: true
steps:
- checkout
- restore_cache:
keys:
- uitest-cache-{{ checksum "requirements/docs.txt" }}
- uitest-cache-{{ checksum "requirements/prod.txt" }}
- uitest-cache-{{ checksum "requirements/dev.txt" }}
- uitest-cache-{{ checksum "requirements/uitests.txt" }}
- uitest-cache-
- run:
name: Install Docker Compose
command: |
set -x
pip install docker-compose>=1.18
docker-compose --version
- run:
name: Start container, verify it's running and start tests
command: |
set -x
sudo sysctl -w vm.max_map_count=262144
docker-compose up -d
sleep 20
docker-compose ps
# Make sure dependencies get updated in worker and web container
docker-compose exec worker make -f Makefile-docker update_deps
docker-compose exec worker supervisorctl restart all
docker-compose exec web make -f Makefile-docker update_deps
docker-compose exec web supervisorctl restart all
# Start Test in Firefox docker container
docker-compose exec selenium-firefox tox -e ui-tests
- store_artifacts:
path: ui-test.html
- save_cache:
key: uitest-cache-{{ checksum "requirements/docs.txt" }}
paths:
- .tox
- save_cache:
key: uitest-cache-{{ checksum "requirements/prod.txt" }}
paths:
- .tox
- save_cache:
key: uitest-cache-{{ checksum "requirements/dev.txt" }}
paths:
- .tox
- save_cache:
key: uitest-cache-{{ checksum "requirements/uitests.txt" }}
paths:
- .tox
- save_cache:
key: uitest-cache-
paths:
- .tox
workflows:
version: 2
build_test_deploy_release:
jobs:
- build-deploy:
filters:
branches:
only: master
- build-release:
filters:
tags:
only: /.*/
branches:
ignore: /.*/
- integration_test