-
Notifications
You must be signed in to change notification settings - Fork 4
130 lines (123 loc) · 3.21 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
name: CI
on:
push:
branches:
- main
tags:
- 'v*'
pull_request:
branches:
- main
concurrency:
group: CI-${{ github.ref }}
cancel-in-progress: true
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Install poetry
run: pip install "poetry==1.4.2"
- name: Install dependencies
run: poetry install
- name: Lint
run: poetry run flake8
docs-build:
name: Docs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.9
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Install poetry
run: pip install "poetry==1.4.2"
- name: Install dependencies
run: poetry install --with docs
- name: Build docs
run: |
cd docs
poetry run make html SPHINXOPTS="-W --keep-going"
test:
name: Test on ${{ matrix.name }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- name: Linux py38
pyversion: '3.8'
- name: Linux py39
pyversion: '3.9'
- name: Linux py310
pyversion: '3.10'
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.pyversion }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.pyversion }}
- name: Install poetry
# Note: we may wish to install in a dedicated venv in the future
# to avoid updating/changing poetries dependencies accidentally
run: pip install "poetry==1.4.2"
- name: Install dependencies
run: poetry install
- name: Test
run: poetry run pytest -v --cov=pylinalg --cov-report=term-missing
build:
name: Build and test wheel
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.9
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Install poetry
run: pip install "poetry==1.4.2"
- name: Install dependencies
run: poetry install
- name: Build wheel
run: poetry build
- name: Twine check
run: poetry run twine check dist/*
- name: Upload wheel artifact
uses: actions/upload-artifact@v2
with:
path: dist
name: dist
publish:
name: Publish release to Github and Pypi
runs-on: ubuntu-latest
needs: [lint, test, build]
if: success() && startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.9
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Download assets
uses: actions/download-artifact@v3
with:
name: dist
path: dist
- name: Release
uses: softprops/action-gh-release@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
files: |
dist/*.tar.gz
dist/*.whl
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_PASSWORD }}