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 209 210 211 212 213 214 215 216 217 218 219 220 221 222
|
# JPype Release pipeline
# NOTES:
# - This pipeline triggers only on changes to release branches or versioning files.
# - ManyLinux builds cover major architectures (x86_64, aarch64, i686).
# - ARM and musllinux jobs are included as commented placeholders for future support.
# - All jobs use JDK 11 (LTS); newer JDKs (e.g., JDK 22) are not yet available on Azure.
# - Python versions are updated as new releases become available on Azure-hosted agents.
# - macOS and Windows wheels are built for all supported Python versions.
# - On macOS, Python is installed via a custom script for compatibility.
# - Artifact publishing is handled consistently across all platforms.
# - To debug a specific build job, set its `condition` to `eq(1,1)` and others to `eq(1,0)`.
trigger: none
pr:
branches:
include:
- releases/*
paths:
include:
- .bumpversion.cfg
- .azure/release.yml
variables:
package_name: jpype1
run_goal: 1 # Set to 1 to enable, 0 to disable, 2 on for special targets
stages:
- stage: Initial
jobs:
- job: SourceDistribution
pool:
vmImage: "ubuntu-latest"
steps:
- template: scripts/sdist.yml
parameters:
artifact: true
- template: scripts/ivy.yml
- stage: Package
jobs:
# Consider switch to manylinux_2_28 for next release
# x86_64 build
- job: ManyLinux_x86_64
condition: eq(variables['run_goal'], 1)
timeoutInMinutes: 360
displayName: "Build manylinux2014_x86_64"
pool:
vmImage: "ubuntu-latest"
variables:
arch: x86_64
plat: manylinux2014_x86_64
image: quay.io/pypa/manylinux2014_x86_64
python.architecture: x64
steps:
- template: scripts/deps.yml
- template: scripts/wheels-linux.yml
- template: scripts/publish-dist.yml
# aarch64 build
- job: ManyLinux_aarch64
condition: eq(variables['run_goal'], 1)
timeoutInMinutes: 360
displayName: "Build manylinux2014_aarch64"
pool:
vmImage: "ubuntu-latest"
variables:
arch: aarch64
plat: manylinux2014_aarch64
image: quay.io/pypa/manylinux2014_aarch64
python.architecture: aarch64
steps:
- template: scripts/deps.yml
- template: scripts/wheels-linux.yml
- template: scripts/publish-dist.yml
# i686 build
- job: ManyLinux_i686
condition: eq(variables['run_goal'], 1)
timeoutInMinutes: 360
displayName: "Build manylinux2014_i686"
pool:
vmImage: "ubuntu-latest"
variables:
arch: i686
plat: manylinux2014_i686
image: quay.io/pypa/manylinux2014_i686
python.architecture: x86
steps:
- template: scripts/deps.yml
- template: scripts/wheels-linux.yml
- template: scripts/publish-dist.yml
# Consider adding these after we have the reverse bridge.
# I don't want to promise something I can't deliver long term.
- job: Musllinux_x86_64
condition: eq(variables['run_goal'], 2)
timeoutInMinutes: 360
displayName: "Build musllinux_1_1_x86_64"
pool:
vmImage: "ubuntu-latest"
variables:
arch: x86_64
plat: musllinux_1_1_x86_64
image: quay.io/pypa/musllinux_1_1_x86_64
python.architecture: x64
steps:
- template: scripts/deps.yml
- template: scripts/wheels-linux.yml
- template: scripts/publish-dist.yml
- job: Musllinux_aarch64
condition: eq(variables['run_goal'], 3)
timeoutInMinutes: 360
displayName: "Build musllinux_1_1_aarch64"
pool:
vmImage: "ubuntu-latest"
variables:
arch: aarch64
plat: musllinux_1_1_aarch64
image: quay.io/pypa/musllinux_1_1_aarch64
python.architecture: aarch64
steps:
- template: scripts/deps.yml
- template: scripts/wheels-linux.yml
- template: scripts/publish-dist.yml
- job: Manylinux2014_ppc64le
condition: eq(variables['run_goal'], 4)
timeoutInMinutes: 360
displayName: "Build manylinux2014_ppc64le"
pool:
vmImage: "ubuntu-latest"
variables:
arch: ppc64le
plat: manylinux2014_ppc64le
image: quay.io/pypa/manylinux2014_ppc64le
python.architecture: ppc64le
steps:
- template: scripts/deps.yml
- template: scripts/wheels-linux.yml
- template: scripts/publish-dist.yml
- job: Manylinux2014_s390x
condition: eq(variables['run_goal'], 5)
timeoutInMinutes: 360
displayName: "Build manylinux2014_s390x"
pool:
vmImage: "ubuntu-latest"
variables:
arch: s390x
plat: manylinux2014_s390x
image: quay.io/pypa/manylinux2014_s390x
python.architecture: s390x
steps:
- template: scripts/deps.yml
- template: scripts/wheels-linux.yml
- template: scripts/publish-dist.yml
- job: Windows_x64
condition: eq(variables['run_goal'], 1)
strategy:
matrix:
Python39:
python.version: '3.9'
python.architecture: 'x64'
Python310:
python.version: '3.10'
python.architecture: 'x64'
Python311:
python.version: '3.11'
python.architecture: 'x64'
Python312:
python.version: '3.12'
python.architecture: 'x64'
Python313:
python.version: '3.13'
python.architecture: 'x64'
pool:
vmImage: "windows-2022"
steps:
- template: scripts/deps.yml
- template: scripts/python.yml
parameters:
version: '$(python.version)'
architecture: '$(python.architecture)'
- template: scripts/jdk.yml
parameters:
version: '11'
- template: scripts/wheels.yml
- template: scripts/publish-dist.yml
- job: OSX
condition: eq(variables['run_goal'], 1)
variables:
python.architecture: 'x64'
strategy:
matrix:
Python39:
python.version: '3.9'
Python310:
python.version: '3.10'
Python311:
python.version: '3.11'
Python312:
python.version: '3.12'
Python313:
python.version: '3.13'
pool:
vmImage: "macos-13"
steps:
- template: scripts/deps.yml
- script: .azure/scripts/osx-python.sh '$(python.version)'
displayName: Install Python.org Python
- template: scripts/jdk.yml
parameters:
version: '11'
- template: scripts/wheels.yml
- template: scripts/publish-dist.yml
|