88 types :
99 - published
1010
11+ concurrency :
12+ group : ${{ github.workflow }}-${{ github.ref }}
13+ # Only cancel workflow on new push if we are not releasing
14+ cancel-in-progress : ${{ github.event_name == 'pull_request' }}
15+
1116jobs :
1217 build-wheel :
1318 name : " Build ${{ matrix.build }} wheels on ${{ matrix.arch }}"
14- runs-on : " ubuntu-latest "
19+ runs-on : ${{ matrix.os }}
1520 strategy :
21+ fail-fast : false
1622 matrix :
1723 arch : ["x86_64", "aarch64"]
1824 build : ["cp38-*", "cp39-*", "cp310-*", "cp311-*", "cp312-*", "cp313-*", "pp38-*", "pp39-*", "pp310-*"]
25+ include :
26+ - arch : " x86_64"
27+ os : ubuntu-latest
28+ - arch : " aarch64"
29+ os : ubuntu-24.04-arm
1930 exclude :
31+ - arch : " aarch64"
32+ build : " cp38-*"
2033 - arch : " aarch64"
2134 build : " pp38-*"
2235 - arch : " aarch64"
3144 - uses : actions/setup-python@v5
3245 with :
3346 python-version : " 3.12"
34- - name : Set up QEMU
35- if : matrix.arch == 'aarch64'
36- uses : docker/setup-qemu-action@v2
37- with :
38- platforms : all
3947 - run : python -m pip install -U pip
4048 - run : python -m pip install cibuildwheel
4149 - run : touch setup.py
5765 name : ${{ env.ARTIFACT_NAME }}
5866 path : dist
5967
60- release :
68+ test :
69+ name : " Test ${{ matrix.python-version }} wheels on ${{ matrix.os }}"
6170 needs : " build-wheel"
71+ runs-on : ${{ matrix.os }}
72+ strategy :
73+ fail-fast : false
74+ matrix :
75+ os : [ubuntu-latest, ubuntu-24.04-arm]
76+ python-version : ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
77+ exclude :
78+ - os : " ubuntu-24.04-arm"
79+ python-version : " 3.8"
80+ steps :
81+ - uses : actions/setup-python@v5
82+ with :
83+ python-version : ${{ matrix.python-version }}
84+ - uses : actions/download-artifact@v4
85+ with :
86+ pattern : dist-*
87+ merge-multiple : true
88+ path : /tmp/dist
89+ - name : setup and install wheel
90+ run : |
91+ python -m pip install -U pip
92+ python -m pip install wheel simpleindex
93+ # Since it's dangerous to use --extra-index-url we use simpleindex
94+ # to mirror PyPI but use the local proxsuite packages
95+ cat <<EOF > configuration.toml
96+ # Serve local files for packages with prefix "proxsuite".
97+ [routes."proxsuite"]
98+ source = "path"
99+ to = "/tmp/dist"
100+
101+ # Otherwise use PyPI.
102+ [routes."{project}"]
103+ source = "http"
104+ to = "https://pypi.org/simple/{project}/"
105+
106+ [server]
107+ host = "127.0.0.1"
108+ port = 8000
109+ EOF
110+ python -m simpleindex ./configuration.toml &
111+ # Wait for simpleindex server
112+ curl --head -X GET --retry 5 --retry-connrefused --retry-delay 1 http://127.0.0.1:8000
113+ python -m pip install -i http://127.0.0.1:8000 proxsuite
114+ - name : test module
115+ run : python -c "import proxsuite"
116+ env :
117+ PYTHONWARNINGS : error
118+
119+ release :
120+ needs : " test"
62121 runs-on : ubuntu-latest
63122 permissions :
64123 id-token : write
@@ -85,8 +144,10 @@ jobs:
85144
86145 needs :
87146 - build-wheel
147+ - test
148+ - release
88149
89- runs-on : Ubuntu -latest
150+ runs-on : ubuntu -latest
90151 steps :
91152 - name : Decide whether the needed jobs succeeded or failed
92153 uses : re-actors/alls-green@release/v1
0 commit comments