@@ -25,11 +25,33 @@ permissions:
2525
2626jobs :
2727 build :
28+ name : build (${{ matrix.name }})
2829 runs-on : ${{ matrix.os }}
2930
3031 strategy :
3132 matrix :
32- os : [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest]
33+ include :
34+ - name : ubuntu-latest
35+ dist_path : dist
36+ os : ubuntu-latest
37+ python : " 3.11"
38+ target : native
39+ - name : ubuntu-24.04-arm
40+ dist_path : dist
41+ os : ubuntu-24.04-arm
42+ python : " 3.11"
43+ target : native
44+ - name : macos-latest
45+ dist_path : dist
46+ os : macos-latest
47+ python : " 3.11"
48+ target : native
49+ - name : windows-latest
50+ dist_path : dist
51+ os : windows-latest
52+ python : " 3.11"
53+ target : native
54+
3355
3456 steps :
3557 - name : Checkout
@@ -40,53 +62,63 @@ jobs:
4062 - name : Setup Python
4163 uses : actions-ext/python/setup@6e1b91a408ea89f49bc8aff8724f83826f7b5446
4264 with :
43- version : " 3.11 "
65+ version : ${{ matrix.python }}
4466
4567 - name : Setup Node.js
4668 uses : actions-ext/node/setup@0ea5bdcd24d2488b28e16bf611b446a2f8e1e12f
4769 with :
4870 version : 22.x
71+ if : matrix.target == 'native'
4972
5073 - name : Setup C++
5174 uses : actions-ext/cpp/setup@c2b1e90366b3a1c628a1df0748135f5e345ab26f
5275
5376 - name : Setup Emscripten
5477 uses : mymindstorm/setup-emsdk@4528d102f7230f0e7b276855c01ea1159be0e984 # v16
78+ if : matrix.target == 'native'
5579
5680 - name : Install dependencies
5781 run : make develop
82+ if : matrix.target == 'native'
5883
5984 - name : Lint
6085 run : make lint
61- if : matrix.os == 'ubuntu-latest'
86+ if : matrix.name == 'ubuntu-latest'
6287
6388 - name : Checks
6489 run : make checks
65- if : matrix.os == 'ubuntu-latest'
90+ if : matrix.name == 'ubuntu-latest'
6691
6792 - name : Test
6893 run : make coverage
94+ if : matrix.target == 'native'
95+
96+ - name : Build and test Pyodide wheel
97+ run : make test-pyodide
98+ if : matrix.target == 'pyodide'
6999
70100 - name : Upload test results (Python)
71101 uses : actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
72102 with :
73- name : test-results-${{ matrix.os }}
103+ name : test-results-${{ matrix.name }}
74104 path : junit.xml
75- if : matrix.os == 'ubuntu-latest'
105+ if : matrix.name == 'ubuntu-latest'
76106
77107 - name : Publish test results
78108 uses : EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2.24.0
79109 with :
80110 files : ' **/junit.xml'
81- if : matrix.os == 'ubuntu-latest'
111+ if : matrix.name == 'ubuntu-latest'
82112
83113 - name : Upload coverage
84114 uses : codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
85115 with :
86116 token : ${{ secrets.CODECOV_TOKEN }}
117+ if : matrix.target == 'native'
87118
88119 - name : Install build dependencies
89120 run : pip install cibuildwheel
121+ if : matrix.target == 'native'
90122
91123 - name : Build distributions (Linux x86_64)
92124 run : |
98130 CIBW_BUILD : " cp311-manylinux*"
99131 CIBW_ARCHS_LINUX : native
100132 CIBW_BUILD_VERBOSITY : 3
101- if : matrix.os == 'ubuntu-latest'
133+ if : matrix.name == 'ubuntu-latest'
102134
103135 - name : Build distributions (Linux ARM64)
104136 run : |
@@ -109,7 +141,7 @@ jobs:
109141 CIBW_BUILD : " cp311-manylinux*"
110142 CIBW_ARCHS_LINUX : native
111143 CIBW_BUILD_VERBOSITY : 3
112- if : matrix.os == 'ubuntu-24.04-arm'
144+ if : matrix.name == 'ubuntu-24.04-arm'
113145
114146 - name : Build distributions (macOS)
115147 run : |
@@ -118,30 +150,30 @@ jobs:
118150 env :
119151 CIBW_BUILD : " cp311-macos*"
120152 CIBW_BUILD_VERBOSITY : 3
121- if : matrix.os == 'macos-latest'
153+ if : matrix.name == 'macos-latest'
122154
123155 - name : Build distributions (Windows)
124156 run : |
125157 if (Test-Path dist) { Remove-Item dist -Recurse -Force }
126158 make dist-py-wheel
127159 env :
128160 CIBW_BUILD : " cp311-win_amd64"
129- if : matrix.os == 'windows-latest'
161+ if : matrix.name == 'windows-latest'
130162
131163 - name : Test wheel
132164 uses : actions-ext/python/test-wheel@6e1b91a408ea89f49bc8aff8724f83826f7b5446
133165 with :
134166 module : python_template_cppjswasm
135- if : runner.os == 'Linux'
167+ if : matrix.target == 'native' && runner.os == 'Linux'
136168
137169 - name : Test source distribution
138170 uses : actions-ext/python/test-sdist@6e1b91a408ea89f49bc8aff8724f83826f7b5446
139171 with :
140172 module : python_template_cppjswasm
141- if : matrix.os == 'ubuntu-latest'
173+ if : matrix.name == 'ubuntu-latest'
142174
143175 - name : Upload distributions
144176 uses : actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
145177 with :
146- name : dist-${{ matrix.os }}
147- path : dist
178+ name : dist-${{ matrix.name }}
179+ path : ${{ matrix.dist_path }}
0 commit comments