forked from thunderbird/addons-server
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcircle.yml
154 lines (149 loc) · 5.6 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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
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:
- run:
name: Checkout git repository
command: |
if [ -n "$CIRCLE_PR_NUMBER" ]
then
git clone --depth 1 https://github.com/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME.git ~/addons-server
git fetch origin "+refs/pull/$CIRCLE_PR_NUMBER/merge:"
git checkout -f FETCH_HEAD
else
git clone --depth 1 --branch $CIRCLE_BRANCH https://github.com/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME.git ~/addons-server
if [ -n "$CIRCLE_TAG" ]
then
git fetch --force origin "refs/tags/${CIRCLE_TAG}"
fi
if [ -n "$CIRCLE_TAG" ]
then
git checkout --force "$CIRCLE_TAG"
else
git checkout --force "$CIRCLE_SHA1"
fi
fi
- restore_cache:
keys:
- uitest-cache-{{ checksum "requirements/docs.txt" }}
- uitest-cache-{{ checksum "requirements/prod_py2.txt" }}
- uitest-cache-{{ checksum "requirements/tests.txt" }}
- uitest-cache-{{ checksum "requirements/dev.txt" }}
- uitest-cache-{{ checksum "requirements/uitests.txt" }}
- uitest-cache-
- run:
name: Install Docker Compose
command: |
# using curl to install for better ci -> local compatibility
set -x
curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose
chmod +x ~/docker-compose
sudo mv ~/docker-compose /usr/local/bin/docker-compose
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 pull --quiet
docker-compose up -d
sleep 20
docker-compose ps
scripts/ui-test-hostname-setup.sh
# Make sure dependencies get updated in worker and web container
docker-compose exec worker make -f Makefile-docker update_deps
docker-compose restart worker
docker-compose exec web make -f Makefile-docker update_deps
docker-compose restart web
# chown to change permissions of olympia.egg* and all folders/file
# This is done because cirlceci has permissions do not allow the user `circleci` to remove or add files create by the root, even if it is part of the root group.
sudo chown -R circleci:circleci .
# Delete any existing uitest users within restmail. TEMP FIX: https://github.com/mozilla/addons-server/issues/8980
wget --method=DELETE http://restmail.net/mail/uitest
# Start Test in Firefox docker container
docker-compose exec --user circleci 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_py2.txt" }}
paths:
- .tox
- save_cache:
key: uitest-cache-{{ checksum "requirements/tests.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