Skip to content

Commit 534af30

Browse files
committed
migration to github CI
1 parent 458e6e5 commit 534af30

File tree

12 files changed

+281
-172
lines changed

12 files changed

+281
-172
lines changed

.azure_pipelines/run_tests.yml

Lines changed: 0 additions & 64 deletions
This file was deleted.

.github/workflows/pythonpackage.yml

Lines changed: 233 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,30 +3,241 @@ name: Python package
33
on: [push]
44

55
jobs:
6-
build:
6+
PEP8:
7+
runs-on: ubuntu-latest
8+
steps:
9+
- uses: actions/checkout@v2
10+
- name: Set up Python
11+
uses: actions/setup-python@v2
12+
with:
13+
python-version: '3.x'
14+
- name: Install dependencies
15+
run: |
16+
python -m pip install --upgrade pip
17+
pip install --upgrade -r flake8_requirements.txt
18+
- name: Lint with flake8
19+
run: |
20+
flake8 advanced_descriptors
21+
22+
PyLint:
23+
runs-on: ubuntu-latest
24+
steps:
25+
- uses: actions/checkout@v2
26+
- name: Set up Python
27+
uses: actions/setup-python@v2
28+
with:
29+
python-version: '3.x'
30+
- name: Install dependencies
31+
run: |
32+
python -m pip install --upgrade pip
33+
pip install --upgrade -r CI_REQUIREMENTS.txt
34+
pip install --upgrade "pylint >= 2.6.0"
35+
- name: Generate version file
36+
run: |
37+
python setup.py --version clean
38+
- name: Lint with PyLint
39+
run: |
40+
pylint advanced_descriptors
41+
42+
MyPy:
43+
runs-on: ubuntu-latest
44+
steps:
45+
- uses: actions/checkout@v2
46+
- name: Set up Python
47+
uses: actions/setup-python@v2
48+
with:
49+
python-version: '3.x'
50+
- name: Install dependencies
51+
run: |
52+
python -m pip install --upgrade pip
53+
pip install --upgrade -r CI_REQUIREMENTS.txt
54+
pip install --upgrade "mypy >= 0.790"
55+
- name: Generate version file
56+
run: |
57+
python setup.py --version clean
58+
- name: Lint with MyPy
59+
run: |
60+
mypy --strict advanced_descriptors
61+
62+
Black:
63+
runs-on: ubuntu-latest
64+
steps:
65+
- uses: actions/checkout@v2
66+
- name: Set up Python
67+
uses: actions/setup-python@v2
68+
with:
69+
python-version: '3.x'
70+
- name: Install dependencies
71+
run: |
72+
python -m pip install --upgrade pip
73+
pip install --upgrade black regex
74+
- name: Check code style with black
75+
run: |
76+
black --check advanced_descriptors
777
78+
TestScript:
79+
needs: [PEP8, PyLint, MyPy, Black]
880
runs-on: ${{ matrix.os }}
981
strategy:
10-
max-parallel: 4
82+
max-parallel: 8
1183
matrix:
1284
os: [ubuntu-latest, windows-latest]
13-
python-version: [3.6, 3.7, 3.8]
14-
15-
steps:
16-
- uses: actions/checkout@v1
17-
- name: Set up Python ${{ matrix.python-version }}
18-
uses: actions/setup-python@v1
19-
with:
20-
python-version: ${{ matrix.python-version }}
21-
- name: Install dependencies
22-
run: |
23-
python -m pip install --upgrade pip wheel
24-
pip install -r CI_REQUIREMENTS.txt
25-
pip install --upgrade pytest pytest-sugar pytest-cov coverage[toml]>=5.0
26-
- name: Build package and install develop
27-
run: |
28-
python setup.py develop -v
29-
- name: Test with pytest
30-
run: |
31-
py.test --cov-report= --cov=advanced_descriptors test
32-
coverage report -m --fail-under 89
85+
python-version: [3.6, 3.7, 3.8, 3.9]
86+
87+
name: "Script based python ${{ matrix.python-version }} on ${{ matrix.os }}"
88+
steps:
89+
- uses: actions/checkout@v2
90+
- name: Set up Python ${{ matrix.python-version }}
91+
uses: actions/setup-python@v2
92+
with:
93+
python-version: ${{ matrix.python-version }}
94+
- name: Install dependencies
95+
run: |
96+
python -m pip install --upgrade pip wheel
97+
pip install --upgrade -r CI_REQUIREMENTS.txt
98+
pip install --upgrade -r pytest_requirements.txt
99+
- name: Build package and install develop
100+
run: |
101+
python setup.py develop -v clean
102+
- name: Test with pytest
103+
run: |
104+
py.test --cov-report= --cov=advanced_descriptors test
105+
coverage report -m --fail-under 85
106+
107+
TestLinux:
108+
needs: [TestScript]
109+
runs-on: ubuntu-latest
110+
strategy:
111+
max-parallel: 4
112+
matrix:
113+
python-version: [3.6, 3.7, 3.8, 3.9]
114+
name: "Cython based python ${{ matrix.python-version }} on linux"
115+
116+
steps:
117+
- uses: actions/checkout@v2
118+
- name: Set up Python ${{ matrix.python-version }}
119+
uses: actions/setup-python@v2
120+
with:
121+
python-version: ${{ matrix.python-version }}
122+
- name: Install dependencies
123+
run: |
124+
python -m pip install --upgrade pip wheel
125+
pip install --upgrade -r CI_REQUIREMENTS.txt
126+
pip install --upgrade Cython
127+
pip install --upgrade -r pytest_requirements.txt
128+
- name: Build package and install
129+
run: |
130+
python setup.py bdist_wheel clean
131+
pip install advanced_descriptors --no-index -f dist
132+
- name: Test with pytest
133+
run: |
134+
py.test
135+
136+
TestWindows:
137+
needs: [TestScript]
138+
runs-on: windows-latest
139+
strategy:
140+
max-parallel: 8
141+
matrix:
142+
WINDOWS:
143+
- { ARCH: 'x86', WINDOWS: 'win32' }
144+
- { ARCH: 'x64', WINDOWS: 'win64' }
145+
python-version: [3.6, 3.7, 3.8, 3.9]
146+
name: "Cython based python ${{ matrix.python-version }} on ${{ matrix.WINDOWS.WINDOWS }}"
147+
148+
steps:
149+
- uses: actions/checkout@v2
150+
- name: Set up Python ${{ matrix.python-version }}
151+
uses: actions/setup-python@v2
152+
with:
153+
python-version: ${{ matrix.python-version }}
154+
architecture: ${{ matrix.WINDOWS.ARCH }}
155+
- name: Install dependencies
156+
run: |
157+
python -m pip install --upgrade pip wheel
158+
pip install --upgrade -r CI_REQUIREMENTS.txt
159+
pip install --upgrade Cython
160+
pip install --upgrade -r pytest_requirements.txt
161+
- name: Build package and install
162+
run: |
163+
python setup.py bdist_wheel clean
164+
pip install advanced_descriptors --no-index -f dist
165+
- name: Test with pytest
166+
run: |
167+
py.test
168+
169+
DeployWindows:
170+
needs: [TestLinux, TestWindows]
171+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
172+
runs-on: windows-latest
173+
strategy:
174+
max-parallel: 6
175+
matrix:
176+
WINDOWS:
177+
- { ARCH: 'x86', WINDOWS: 'win32' }
178+
- { ARCH: 'x64', WINDOWS: 'win64' }
179+
python-version: [3.7, 3.8, 3.9]
180+
name: "Release for python ${{ matrix.python-version }} on ${{ matrix.WINDOWS.WINDOWS }}"
181+
182+
steps:
183+
- uses: actions/checkout@v2
184+
- name: Set up Python ${{ matrix.python-version }}
185+
uses: actions/setup-python@v2
186+
with:
187+
python-version: ${{ matrix.python-version }}
188+
architecture: ${{ matrix.WINDOWS.ARCH }}
189+
- name: Install dependencies
190+
run: |
191+
python -m pip install --upgrade pip wheel
192+
pip install --upgrade -r build_requirements.txt
193+
pip install --upgrade twine
194+
- name: Build package
195+
run: |
196+
python setup.py sdist bdist_wheel clean
197+
- name: Deploy
198+
env:
199+
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
200+
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
201+
run: |
202+
twine upload --skip-existing dist/*
203+
204+
DeployManyLinux:
205+
needs: [ TestLinux, TestWindows ]
206+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
207+
runs-on: ubuntu-latest
208+
container:
209+
image: ${{ matrix.MANYLINUX.CONTAINER }}
210+
env:
211+
PYTHONDONTWRITEBYTECODE: 1
212+
strategy:
213+
matrix:
214+
PYTHON: [ "cp37-cp37m", "cp38-cp38", "cp39-cp39" ]
215+
MANYLINUX:
216+
- NAME: manylinux2010_x86_64
217+
CONTAINER: "quay.io/pypa/manylinux2010_x86_64"
218+
- NAME: manylinux2014_x86_64
219+
CONTAINER: "quay.io/pypa/manylinux2014_x86_64"
220+
name: "${{ matrix.PYTHON }} for ${{ matrix.MANYLINUX.NAME }}"
221+
steps:
222+
- uses: actions/checkout@v2
223+
- name: Install main dependencies
224+
run: |
225+
/opt/python/${{ matrix.PYTHON }}/bin/python -m pip install -U pip wheel setuptools
226+
/opt/python/${{ matrix.PYTHON }}/bin/pip install --upgrade -r build_requirements.txt
227+
/opt/python/${{ matrix.PYTHON }}/bin/pip install --upgrade twine
228+
- name: Build package
229+
run: /opt/python/${{ matrix.PYTHON }}/bin/python setup.py bdist_wheel clean
230+
- name: Bundle external shared libraries into the wheels
231+
run: |
232+
for whl in dist/*.whl; do
233+
echo "Repairing $whl..."
234+
auditwheel repair "$whl" -w dist/
235+
done
236+
- name: Cleanup OS specific wheels
237+
run: rm -fv dist/*-linux_*.whl
238+
- name: Deploy
239+
env:
240+
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
241+
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
242+
run: |
243+
twine upload --skip-existing dist/*

0 commit comments

Comments
 (0)