-
Notifications
You must be signed in to change notification settings - Fork 1
133 lines (110 loc) · 2.71 KB
/
package.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
name: Test and Package
on:
push:
branches:
- main
release:
types: [created,published]
pull_request:
concurrency:
group: test-${{github.ref}}
cancel-in-progress: true
jobs:
lint:
name: Check Source Style
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Check source code
run: |
status=0
if ! pipx run ruff check --output-format=github binpickle; then
status=1
fi
pipx run ruff format --diff binpickle
if [ $status -ne 0 ]; then
exit $status
fi
test:
name: Test with Python ${{matrix.python}} on ${{matrix.platform}}
runs-on: ${{matrix.platform}}-latest
strategy:
matrix:
platform:
- macos
- windows
- ubuntu
python:
- "3.8"
- "3.9"
- "3.10"
- "3.11"
exclude:
- platform: macos
python: 3.9
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up Python and environment
uses: lenskit/lkbuild/actions/setup-vanilla-env@main
with:
python-version: ${{matrix.python}}
install-with: flit
extras: all
- name: Run tests
run: python -m pytest --cov=binpickle --cov-report=xml tests
- name: Upload coverage
uses: codecov/codecov-action@v1
no-extras:
name: Test without extras
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up Python
uses: lenskit/lkbuild/actions/setup-vanilla-env@main
with:
python-version: 3.8
install-with: flit
- name: Run tests
run: python -m pytest --cov=binpickle --cov-report=xml tests
- name: Upload coverage
uses: codecov/codecov-action@v1
sdist:
name: Build Source Packages
runs-on: ubuntu-latest
needs: [test, lint, no-extras]
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Fetch Git tags
run: git fetch --tags
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install Python deps
run: pip install -U flit
- name: Build distribution
run: flit build
- name: Save archive
uses: actions/upload-artifact@v1
with:
name: pypi-pkgs
path: dist
- name: List dist dir
run: ls -R dist
- name: Publish PyPI packages
if: github.event_name == 'release'
run: |
flit publish
shell: bash
env:
TWINE_NON_INTERACTIVE: y
FLIT_USERNAME: __token__
FLIT_PASSWORD: ${{ secrets.TWINE_TOKEN }}