-
Notifications
You must be signed in to change notification settings - Fork 0
156 lines (122 loc) · 3.59 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
149
150
151
152
153
154
155
156
name: CI
on:
push:
branches:
pull_request:
release:
types: [published]
defaults:
run:
shell: bash
jobs:
format_lint:
name: Formatting and linting
strategy:
fail-fast: false
matrix:
python-version: ['3.10']
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Set up repo
uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install pipenv
run: pip install pipenv==2021.5.29
- name: Install dependencies
run: pipenv install --dev --deploy --python ${{ matrix.python-version }}
- name: Format code
run: |
set -e
pipenv run ./scripts/format.sh
[ -z "$(git status --porcelain=v1)" ]
- name: Lint code
run: pipenv run ./scripts/check.sh
test:
name: Tests
strategy:
fail-fast: false
matrix:
python-version: [3.7, 3.8, 3.9, '3.10']
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Set up repo
uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install pipenv
run: pip install pipenv==2021.5.29
- name: Install dependencies
run: pipenv install --dev --deploy --python ${{ matrix.python-version }}
- name: Run tests
run: pipenv run pytest --cov-report=xml --verbose --showlocals tests/
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1
with:
name: ${{ matrix.os }}-${{ matrix.python-version }}
fail_ci_if_error: true
env_vars: OS,PYTHON_VERSION,JOB
env:
JOB: ${{ github.job }}
OS: ${{ matrix.os }}
PYTHON_VERSION: ${{ matrix.python-version }}
build:
name: Build
strategy:
fail-fast: false
matrix:
python-version: [3.7, 3.8, 3.9, '3.10']
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Set up repo
uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install setuptools and wheel
run: pip install 'setuptools>=46.4.0' wheel
- name: Build package
run: python setup.py sdist bdist_wheel
build_docs:
name: Build docs
runs-on: ubuntu-latest
steps:
- name: Set up repo
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
- name: Install Sphinx
run: pip install sphinx sphinx_rtd_theme
- name: Build docs
run: make -C docs html
publish:
name: Publish
needs:
- format_lint
- test
- build
runs-on: ubuntu-latest
# Only run for new releases
if: github.event_name == 'release'
steps:
- name: Set up repo
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
- name: Install setuptools and wheel
run: pip install 'setuptools>=46.4.0' wheel
- name: Build package
run: python setup.py sdist bdist_wheel
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@v1.3.1
with:
user: __token__
password: ${{ secrets.PYPI_TOKEN }}