-
Notifications
You must be signed in to change notification settings - Fork 256
201 lines (177 loc) · 7.06 KB
/
test-wheels.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
on:
push:
pull_request:
create:
name: Continuous Integration - Testing Wheels on JREs
jobs:
build_test_jar:
runs-on: 'ubuntu-latest'
steps:
- name: Checkout pyjnius
uses: actions/checkout@v3
- name: Setup java
# There's no need to setup java on ubuntu-latest, as build is done into a manylinux
# containerized environment. (CIBW_BEFORE_ALL_LINUX) takes care of it.
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
architecture: 'x64'
- name: Setup ant on Linux
run: |
sudo apt-get update && sudo apt-get install -y ant
- name: Build test-classes via ant
run: ant all
- name: Upload test-classes
uses: actions/upload-artifact@v3
with:
name: test-classes
path: build/test-classes
build_wheels:
name: cibuildwheel on ${{ matrix.os }} ${{ matrix.architecture }}
env:
CIBW_BEFORE_ALL_LINUX: 'yum install -y java-11-openjdk-devel'
CIBW_REPAIR_WHEEL_COMMAND_MACOS: ''
CIBW_SKIP: 'cp36-* *musllinux*'
strategy:
matrix:
include:
- os: windows-latest
architecture: 'x86'
cibw_archs: 'x86'
- os: windows-latest
architecture: 'x64'
cibw_archs: 'AMD64'
- os: ubuntu-latest
architecture: 'x64'
cibw_archs: 'x86_64'
- os: macos-latest
architecture: 'x64'
cibw_archs: 'x86_64 universal2'
runs-on: ${{ matrix.os }}
steps:
- name: Checkout pyjnius
uses: actions/checkout@v3
- name: Setup Python (Ubuntu x86_64, macOS Intel, Windows x86_64)
if: matrix.os == 'macos-latest' || matrix.os == 'windows-latest' || matrix.os == 'ubuntu-latest'
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Setup java
# There's no need to setup java on ubuntu-latest, as build is done into a manylinux
# containerized environment. (CIBW_BEFORE_ALL_LINUX) takes care of it.
if: ${{ matrix.os != 'ubuntu-latest' }}
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
architecture: ${{ matrix.architecture }}
- name: Install cibuildwheel & build wheels (Windows)
if: matrix.os == 'windows-latest'
env:
CIBW_ARCHS: '${{ matrix.cibw_archs }}'
run: |
python -m pip install cibuildwheel~=2.16.2
python -m cibuildwheel --output-dir dist
- name: Install cibuildwheel & build wheels (Linux, macOS Intel)
if: (matrix.os == 'ubuntu-latest') || (matrix.os == 'kivy-ubuntu-arm64') || (matrix.os == 'macos-latest')
env:
CIBW_ARCHS: '${{ matrix.cibw_archs }}'
run: |
source .ci/utils.sh
ensure_python_version 3.11
python -m pip install cibuildwheel~=2.16.2
python -m cibuildwheel --output-dir dist
- name: upload wheels
uses: actions/upload-artifact@v3
with:
name: dist
path: dist
test_wheels:
name: Test wheel on ${{ matrix.os }} (${{ matrix.architecture }}) Python ${{ matrix.python }}
needs:
- build_wheels
continue-on-error: true
strategy:
matrix:
os: ['ubuntu-latest', 'macos-latest', 'windows-latest', 'kivy-ubuntu-arm64']
python: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', 'pypy3.7', 'pypy3.8', 'pypy3.9']
include:
# We may would like to introduce tests also on windows-latest on x86 (win32 wheels)?
- os: ubuntu-latest
architecture: 'x64'
- os: windows-latest
architecture: 'x64'
- os: macos-latest
architecture: 'x64'
- os: apple-silicon-m1
architecture: 'aarch64'
python: '3.10'
- os: apple-silicon-m1
architecture: 'aarch64'
python: '3.11'
- os: apple-silicon-m1
architecture: 'aarch64'
python: '3.12'
runs-on: ${{ matrix.os }}
steps:
- name: Checkout pyjnius
uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: dist
path: dist
- uses: actions/download-artifact@v3
with:
name: test-classes
path: build/test-classes
- name: Setup Python (Ubuntu x86_64, macOS Intel, Windows x86_64)
# Needs to be skipped on our self-hosted runners tagged as 'apple-silicon-m1'
if: matrix.os == 'macos-latest' || matrix.os == 'windows-latest' || matrix.os == 'ubuntu-latest' || matrix.os == 'apple-silicon-m1'
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- name: Setup java
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
java-package: 'jre'
architecture: ${{ matrix.architecture }}
- name: Install pyjnius wheel + test prerequisites (Windows, macOS)
if: matrix.os == 'windows-latest' || matrix.os == 'macos-latest' || matrix.os == 'apple-silicon-m1'
# --find-links=dist --no-index is needed to avoid downloading the pyjnius wheel
# from the index. We need to test the wheel we just built.
run: |
python -m pip install --find-links=dist --no-index pyjnius
python -m pip install pyjnius[dev,ci]
- name: Install pyjnius wheel + test prerequisites (Linux)
if: matrix.os == 'ubuntu-latest' || matrix.os == 'kivy-ubuntu-arm64'
# --find-links=dist --no-index is needed to avoid downloading the pyjnius wheel
# from the index. We need to test the wheel we just built.
run: |
source .ci/utils.sh
ensure_python_version ${{ matrix.python }}
python -m pip install --find-links=dist --no-index pyjnius
python -m pip install pyjnius[dev,ci]
- name: Test wheel (Linux, macOS)
if: (matrix.os == 'ubuntu-latest') || (matrix.os == 'kivy-ubuntu-arm64') || (matrix.os == 'macos-latest') || (matrix.os == 'apple-silicon-m1')
run: |
source .ci/utils.sh
ensure_python_version ${{ matrix.python }}
cd tests
CLASSPATH=../build/test-classes:../build/classes python -m pytest -v
- name: Test wheel ( Windows + Python == 3.7.x )
# On Python < 3.8.x, we can't use `os.add_dll_directory`, so the jre should be in PATH.
if: (matrix.os == 'windows-latest') && contains(matrix.python, '3.7')
run: |
cd tests
$env:PATH +=";$env:JAVA_HOME\jre\bin\server\;$env:JAVA_HOME\jre\bin\client\;$env:JAVA_HOME\bin\server\"
$env:CLASSPATH ="../build/test-classes;../build/classes"
python -m pytest -v
- name: Test wheel (Windows + Python != 3.7.x )
if: (matrix.os == 'windows-latest') && !contains(matrix.python, '3.7')
run: |
cd tests
$env:CLASSPATH ="../build/test-classes;../build/classes"
python -m pytest -v