Skip to content

Commit a47b228

Browse files
authored
0.11.1 Release
2 parents a92b40f + 0865510 commit a47b228

File tree

19 files changed

+513
-23
lines changed

19 files changed

+513
-23
lines changed

.github/workflows/ci.yml

Lines changed: 377 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,377 @@
1+
name: CI
2+
3+
# yamllint disable-line rule:truthy
4+
on:
5+
push:
6+
pull_request: ~
7+
8+
env:
9+
CACHE_VERSION: 1
10+
DEFAULT_PYTHON: 3.7
11+
PRE_COMMIT_HOME: ~/.cache/pre-commit
12+
13+
jobs:
14+
# Separate job to pre-populate the base dependency cache
15+
# This prevent upcoming jobs to do the same individually
16+
prepare-base:
17+
name: Prepare base dependencies
18+
runs-on: ubuntu-latest
19+
strategy:
20+
matrix:
21+
python-version: [3.7, 3.8, 3.9]
22+
steps:
23+
- name: Check out code from GitHub
24+
uses: actions/checkout@v2
25+
- name: Set up Python ${{ matrix.python-version }}
26+
id: python
27+
uses: actions/[email protected]
28+
with:
29+
python-version: ${{ matrix.python-version }}
30+
- name: Restore base Python virtual environment
31+
id: cache-venv
32+
uses: actions/cache@v2
33+
with:
34+
path: venv
35+
key: >-
36+
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
37+
steps.python.outputs.python-version }}-${{
38+
hashFiles('requirements_test.txt') }}
39+
restore-keys: |
40+
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{ steps.python.outputs.python-version }}-
41+
- name: Create Python virtual environment
42+
if: steps.cache-venv.outputs.cache-hit != 'true'
43+
run: |
44+
python -m venv venv
45+
. venv/bin/activate
46+
pip install -U pip setuptools pre-commit
47+
pip install -r requirements_test.txt
48+
pip install -e .
49+
50+
pre-commit:
51+
name: Prepare pre-commit environment
52+
runs-on: ubuntu-latest
53+
needs: prepare-base
54+
steps:
55+
- name: Check out code from GitHub
56+
uses: actions/checkout@v2
57+
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
58+
uses: actions/[email protected]
59+
id: python
60+
with:
61+
python-version: ${{ env.DEFAULT_PYTHON }}
62+
- name: Restore base Python virtual environment
63+
id: cache-venv
64+
uses: actions/cache@v2
65+
with:
66+
path: venv
67+
key: >-
68+
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
69+
steps.python.outputs.python-version }}-${{
70+
hashFiles('requirements_test.txt') }}
71+
- name: Fail job if Python cache restore failed
72+
if: steps.cache-venv.outputs.cache-hit != 'true'
73+
run: |
74+
echo "Failed to restore Python virtual environment from cache"
75+
exit 1
76+
- name: Restore pre-commit environment from cache
77+
id: cache-precommit
78+
uses: actions/cache@v2
79+
with:
80+
path: ${{ env.PRE_COMMIT_HOME }}
81+
key: |
82+
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
83+
restore-keys: |
84+
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-
85+
- name: Install pre-commit dependencies
86+
if: steps.cache-precommit.outputs.cache-hit != 'true'
87+
run: |
88+
. venv/bin/activate
89+
pre-commit install-hooks
90+
91+
lint-black:
92+
name: Check black
93+
runs-on: ubuntu-latest
94+
needs: pre-commit
95+
steps:
96+
- name: Check out code from GitHub
97+
uses: actions/checkout@v2
98+
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
99+
uses: actions/[email protected]
100+
id: python
101+
with:
102+
python-version: ${{ env.DEFAULT_PYTHON }}
103+
- name: Restore base Python virtual environment
104+
id: cache-venv
105+
uses: actions/cache@v2
106+
with:
107+
path: venv
108+
key: >-
109+
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
110+
steps.python.outputs.python-version }}-${{
111+
hashFiles('requirements_test.txt') }}
112+
- name: Fail job if Python cache restore failed
113+
if: steps.cache-venv.outputs.cache-hit != 'true'
114+
run: |
115+
echo "Failed to restore Python virtual environment from cache"
116+
exit 1
117+
- name: Restore pre-commit environment from cache
118+
id: cache-precommit
119+
uses: actions/cache@v2
120+
with:
121+
path: ${{ env.PRE_COMMIT_HOME }}
122+
key: |
123+
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
124+
- name: Fail job if cache restore failed
125+
if: steps.cache-venv.outputs.cache-hit != 'true'
126+
run: |
127+
echo "Failed to restore Python virtual environment from cache"
128+
exit 1
129+
- name: Run black
130+
run: |
131+
. venv/bin/activate
132+
pre-commit run --hook-stage manual black --all-files --show-diff-on-failure
133+
134+
lint-flake8:
135+
name: Check flake8
136+
runs-on: ubuntu-latest
137+
needs: pre-commit
138+
steps:
139+
- name: Check out code from GitHub
140+
uses: actions/checkout@v2
141+
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
142+
uses: actions/[email protected]
143+
id: python
144+
with:
145+
python-version: ${{ env.DEFAULT_PYTHON }}
146+
- name: Restore base Python virtual environment
147+
id: cache-venv
148+
uses: actions/cache@v2
149+
with:
150+
path: venv
151+
key: >-
152+
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
153+
steps.python.outputs.python-version }}-${{
154+
hashFiles('requirements_test.txt') }}
155+
- name: Fail job if Python cache restore failed
156+
if: steps.cache-venv.outputs.cache-hit != 'true'
157+
run: |
158+
echo "Failed to restore Python virtual environment from cache"
159+
exit 1
160+
- name: Restore pre-commit environment from cache
161+
id: cache-precommit
162+
uses: actions/cache@v2
163+
with:
164+
path: ${{ env.PRE_COMMIT_HOME }}
165+
key: |
166+
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
167+
- name: Fail job if cache restore failed
168+
if: steps.cache-venv.outputs.cache-hit != 'true'
169+
run: |
170+
echo "Failed to restore Python virtual environment from cache"
171+
exit 1
172+
- name: Register flake8 problem matcher
173+
run: |
174+
echo "::add-matcher::.github/workflows/matchers/flake8.json"
175+
- name: Run flake8
176+
run: |
177+
. venv/bin/activate
178+
pre-commit run --hook-stage manual flake8 --all-files
179+
180+
lint-isort:
181+
name: Check isort
182+
runs-on: ubuntu-latest
183+
needs: pre-commit
184+
steps:
185+
- name: Check out code from GitHub
186+
uses: actions/checkout@v2
187+
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
188+
uses: actions/[email protected]
189+
id: python
190+
with:
191+
python-version: ${{ env.DEFAULT_PYTHON }}
192+
- name: Restore base Python virtual environment
193+
id: cache-venv
194+
uses: actions/cache@v2
195+
with:
196+
path: venv
197+
key: >-
198+
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
199+
steps.python.outputs.python-version }}-${{
200+
hashFiles('requirements_test.txt') }}
201+
- name: Fail job if Python cache restore failed
202+
if: steps.cache-venv.outputs.cache-hit != 'true'
203+
run: |
204+
echo "Failed to restore Python virtual environment from cache"
205+
exit 1
206+
- name: Restore pre-commit environment from cache
207+
id: cache-precommit
208+
uses: actions/cache@v2
209+
with:
210+
path: ${{ env.PRE_COMMIT_HOME }}
211+
key: |
212+
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
213+
- name: Fail job if cache restore failed
214+
if: steps.cache-venv.outputs.cache-hit != 'true'
215+
run: |
216+
echo "Failed to restore Python virtual environment from cache"
217+
exit 1
218+
- name: Run isort
219+
run: |
220+
. venv/bin/activate
221+
pre-commit run --hook-stage manual isort --all-files --show-diff-on-failure
222+
223+
lint-codespell:
224+
name: Check codespell
225+
runs-on: ubuntu-latest
226+
needs: pre-commit
227+
steps:
228+
- name: Check out code from GitHub
229+
uses: actions/checkout@v2
230+
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
231+
uses: actions/[email protected]
232+
id: python
233+
with:
234+
python-version: ${{ env.DEFAULT_PYTHON }}
235+
- name: Restore base Python virtual environment
236+
id: cache-venv
237+
uses: actions/cache@v2
238+
with:
239+
path: venv
240+
key: >-
241+
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
242+
steps.python.outputs.python-version }}-${{
243+
hashFiles('requirements_test.txt') }}
244+
- name: Fail job if Python cache restore failed
245+
if: steps.cache-venv.outputs.cache-hit != 'true'
246+
run: |
247+
echo "Failed to restore Python virtual environment from cache"
248+
exit 1
249+
- name: Restore pre-commit environment from cache
250+
id: cache-precommit
251+
uses: actions/cache@v2
252+
with:
253+
path: ${{ env.PRE_COMMIT_HOME }}
254+
key: |
255+
${{ env.CACHE_VERSION}}-${{ runner.os }}-pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
256+
- name: Fail job if cache restore failed
257+
if: steps.cache-venv.outputs.cache-hit != 'true'
258+
run: |
259+
echo "Failed to restore Python virtual environment from cache"
260+
exit 1
261+
- name: Register codespell problem matcher
262+
run: |
263+
echo "::add-matcher::.github/workflows/matchers/codespell.json"
264+
- name: Run codespell
265+
run: |
266+
. venv/bin/activate
267+
pre-commit run --hook-stage manual codespell --all-files --show-diff-on-failure
268+
269+
pytest:
270+
runs-on: ubuntu-latest
271+
needs: prepare-base
272+
strategy:
273+
matrix:
274+
python-version: [3.7, 3.8, 3.9]
275+
name: >-
276+
Run tests Python ${{ matrix.python-version }}
277+
steps:
278+
- name: Check out code from GitHub
279+
uses: actions/checkout@v2
280+
- name: Set up Python ${{ matrix.python-version }}
281+
uses: actions/[email protected]
282+
id: python
283+
with:
284+
python-version: ${{ matrix.python-version }}
285+
- name: Restore base Python virtual environment
286+
id: cache-venv
287+
uses: actions/cache@v2
288+
with:
289+
path: venv
290+
key: >-
291+
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
292+
steps.python.outputs.python-version }}-${{
293+
hashFiles('requirements_test.txt') }}
294+
- name: Fail job if Python cache restore failed
295+
if: steps.cache-venv.outputs.cache-hit != 'true'
296+
run: |
297+
echo "Failed to restore Python virtual environment from cache"
298+
exit 1
299+
- name: Register Python problem matcher
300+
run: |
301+
echo "::add-matcher::.github/workflows/matchers/python.json"
302+
- name: Install Pytest Annotation plugin
303+
run: |
304+
. venv/bin/activate
305+
# Ideally this should be part of our dependencies
306+
# However this plugin is fairly new and doesn't run correctly
307+
# on a non-GitHub environment.
308+
pip install pytest-github-actions-annotate-failures
309+
- name: Run pytest
310+
run: |
311+
. venv/bin/activate
312+
pytest \
313+
-qq \
314+
--timeout=9 \
315+
--durations=10 \
316+
--cov zigpy_deconz \
317+
--cov-report=term-missing \
318+
-o console_output_style=count \
319+
-p no:sugar \
320+
tests
321+
- name: Upload coverage artifact
322+
uses: actions/[email protected]
323+
with:
324+
name: coverage-${{ matrix.python-version }}
325+
path: .coverage
326+
- name: Coveralls
327+
env:
328+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
329+
COVERALLS_FLAG_NAME: ${{ matrix.python-version }}
330+
COVERALLS_PARALLEL: true
331+
run: |
332+
. venv/bin/activate
333+
coveralls
334+
335+
336+
coverage:
337+
name: Process test coverage
338+
runs-on: ubuntu-latest
339+
needs: pytest
340+
steps:
341+
- name: Check out code from GitHub
342+
uses: actions/checkout@v2
343+
- name: Set up Python ${{ matrix.python-version }}
344+
uses: actions/[email protected]
345+
id: python
346+
with:
347+
python-version: ${{ env.DEFAULT_PYTHON }}
348+
- name: Restore base Python virtual environment
349+
id: cache-venv
350+
uses: actions/cache@v2
351+
with:
352+
path: venv
353+
key: >-
354+
${{ env.CACHE_VERSION}}-${{ runner.os }}-base-venv-${{
355+
steps.python.outputs.python-version }}-${{
356+
hashFiles('requirements_test.txt') }}
357+
- name: Fail job if Python cache restore failed
358+
if: steps.cache-venv.outputs.cache-hit != 'true'
359+
run: |
360+
echo "Failed to restore Python virtual environment from cache"
361+
exit 1
362+
- name: Download all coverage artifacts
363+
uses: actions/download-artifact@v2
364+
- name: Combine coverage results
365+
run: |
366+
. venv/bin/activate
367+
coverage combine coverage*/.coverage*
368+
coverage report --fail-under=97
369+
coverage xml
370+
- name: Upload coverage to Codecov
371+
uses: codecov/[email protected]
372+
- name: Upload coverage to Coveralls
373+
env:
374+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
375+
run: |
376+
. venv/bin/activate
377+
coveralls --finish
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"problemMatcher": [
3+
{
4+
"owner": "codespell",
5+
"severity": "warning",
6+
"pattern": [
7+
{
8+
"regexp": "^(.+):(\\d+):\\s(.+)$",
9+
"file": 1,
10+
"line": 2,
11+
"message": 3
12+
}
13+
]
14+
}
15+
]
16+
}

0 commit comments

Comments
 (0)