-
Notifications
You must be signed in to change notification settings - Fork 5
208 lines (165 loc) · 5.34 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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
name: CI tests
on:
push:
create:
jobs:
sdist:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install Dependency
run: |
python -m pip install -U pip setuptools && python -m pip install -r requirements.txt
- name: Build sdist
run: make sdist
- name: Archive sdist
uses: actions/upload-artifact@v4
with:
name: sdist
path: dist/*.tar.gz
if-no-files-found: ignore
Tests:
strategy:
# Allows for matrix sub-jobs to fail without canceling the rest
fail-fast: false
matrix:
python-version: ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13-dev"]
include:
- python-version: "3.13-dev"
allowed_failure: true
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
if: startsWith(matrix.python-version, '3.')
with:
python-version: ${{ matrix.python-version }}
- name: Set up Python2 (Linux)
if: matrix.python-version == '2.7' && startsWith(matrix.os, 'ubuntu')
run: |
sudo ln -fs python2 /usr/bin/python
sudo apt-get update
sudo apt-get install python-setuptools python2-dev
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
sudo python2 get-pip.py
ls -l /usr/bin/pip* /usr/local/bin/pip*
which pip
- name: Install Dependency
run: |
python -m pip install -U pip setuptools && python -m pip install -r requirements.txt
- name: Build
continue-on-error: ${{ matrix.allowed_failure || false }}
run: make local
- name: Run slow tests
continue-on-error: ${{ matrix.allowed_failure || false }}
run: make testslow
- name: Running benchmark
if: startsWith(matrix.python-version, '3.')
run: |
python benchmark/telco_fractions.py -n 250
python benchmark/microbench.py create pydigits
Linux:
strategy:
# Allows for matrix sub-jobs to fail without canceling the rest
fail-fast: false
matrix:
image:
- manylinux1_x86_64
- manylinux1_i686
- manylinux_2_24_i686
- manylinux_2_24_x86_64
- manylinux_2_28_x86_64
- musllinux_1_1_x86_64
pyversion: ["cp"]
include:
- image: manylinux_2_24_aarch64
pyversion: "cp37"
- image: manylinux_2_24_aarch64
pyversion: "cp38"
- image: manylinux_2_24_aarch64
pyversion: "cp39"
- image: manylinux_2_24_aarch64
pyversion: "cp310"
- image: manylinux_2_24_aarch64
pyversion: "cp311"
- image: manylinux_2_28_aarch64
pyversion: "cp312"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install Dependency
run: |
python -m pip install -U pip setuptools && python -m pip install --pre -r requirements.txt
- name: Building wheel
run: |
make PYTHON_WHEEL_BUILD_VERSION="${{ matrix.pyversion }}*" sdist wheel_${{ matrix.image }}
- name: Copy wheels in dist
run: cp -v wheelhouse*/*-m*linux*.whl dist/ # manylinux / musllinux
- name: Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: dist/*cp27*.whl, dist/*cp35*.whl
- name: Archive Wheels
uses: actions/upload-artifact@v4
with:
name: wheels-${{ matrix.image }}-${{ matrix.pyversion }}
path: dist/*.whl
if-no-files-found: ignore
non-Linux:
strategy:
# Allows for matrix sub-jobs to fail without canceling the rest
fail-fast: false
matrix:
#os: [macos-10.15, windows-latest]
#os: [macos-10.15, macOS-M1]
os: [macos-11.0, windows-latest]
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13-dev"]
include:
- python-version: "3.13-dev"
allowed_failure: true
runs-on: ${{ matrix.os }}
env: { MACOSX_DEPLOYMENT_TARGET: 11.0 }
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install -U pip setuptools wheel
python -m pip install --pre -r requirements.txt
- name: Build wheels
run: make sdist wheel
- name: Run slow tests
run: make testslow
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-${{ matrix.os }}-${{ matrix.python-version }}
path: dist/*.whl
if-no-files-found: ignore
run: |
python benchmark/telco_fractions.py -n 250
python benchmark/microbench.py create pydigits
merge-wheels:
needs: [ Linux, non-Linux ]
runs-on: ubuntu-latest
steps:
- name: Merge wheels
uses: actions/upload-artifact/merge@v4
with:
name: all_wheels
pattern: wheels-*
delete-merged: true
compression-level: 9