-
Notifications
You must be signed in to change notification settings - Fork 426
148 lines (119 loc) · 3.32 KB
/
ci.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
name: CI
on:
workflow_dispatch:
push:
paths-ignore:
- '.cookiecutter/*'
- '.gitignore'
- 'HACKING.md'
- 'LICENSE'
workflow_call:
env:
TOX_PARALLEL_NO_SPINNER: 1
PYTEST_ADDOPTS: --exitfirst
jobs:
backend:
name: Backend
runs-on: ubuntu-latest
services:
postgres:
image: postgres:11.5-alpine
ports:
- 5432:5432
elasticsearch:
image: hypothesis/elasticsearch:latest
ports:
- 9200:9200
env:
discovery.type: single-node
steps:
- name: Checkout git repo
uses: actions/checkout@v3
- name: Setup python
uses: actions/setup-python@v4
with:
python-version-file: '.python-version'
- name: Update pip
run: python -m pip install --upgrade pip
- name: Install tox
run: python -m pip install 'tox<4'
- name: Create test databases
run: psql -U postgres -h localhost -p 5432 -c 'CREATE DATABASE htest'
- name: Cache the .tox dir
uses: actions/cache@v3
with:
path: |
.tox/lint
.tox/checkformatting
.tox/tests
.tox/coverage
key: ${{ runner.os }}-tox-backend-${{ hashFiles('tox.ini', 'requirements/**', 'setup.py', 'setup.cfg') }}
- name: Run tox
run: tox --parallel auto -e checkformatting,tests,coverage,lint
functests:
name: Functional tests
runs-on: ubuntu-latest
services:
postgres:
image: postgres:11.5-alpine
ports:
- 5432:5432
elasticsearch:
image: hypothesis/elasticsearch:latest
ports:
- 9200:9200
env:
discovery.type: single-node
rabbitmq:
image: rabbitmq:3.6-management-alpine
ports:
- 5672:5672
steps:
- name: Checkout git repo
uses: actions/checkout@v3
- name: Setup python
uses: actions/setup-python@v4
with:
python-version-file: '.python-version'
- name: Update pip
run: python -m pip install --upgrade pip
- name: Install tox
run: python -m pip install 'tox<4'
- name: Create test databases
run: psql -U postgres -h localhost -p 5432 -c 'CREATE DATABASE htest'
- name: Cache the .tox dir
uses: actions/cache@v3
with:
path: |
.tox/functests
key: ${{ runner.os }}-tox-functests-${{ hashFiles('tox.ini', 'requirements/**', 'setup.py', 'setup.cfg') }}
- name: Cache the node_modules dir
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-node_modules-${{ hashFiles('package-lock.json') }}
- name: npm install
run: npm install
- name: gulp build
run: gulp build
- name: Run tox
# Note we run the func tests backwards here to prove there are no order
# dependent tests
run: tox -e functests -- tests/functional --reverse
frontend:
name: Frontend
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Cache the node_modules dir
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-node_modules-${{ hashFiles('package-lock.json') }}
- name: Format
run: make frontend-checkformatting
- name: Lint
run: make frontend-lint
- name: Test
run: gulp test