22# OneBranch Release Pipeline for mssql-python
33# =========================================================================================
44# Builds Python wheels for all supported platforms with SDL compliance:
5- # - Windows: Python 3.10-3.14 (x64 + ARM64)
6- # - macOS: Python 3.10-3.14 (Universal2 = x86_64 + ARM64 in single binary)
7- # - Linux: Python 3.10-3.14 on manylinux/musllinux (x86_64 + ARM64)
5+ # - Windows: Python 3.10-3.15 (x64 + ARM64)
6+ # - macOS: Python 3.10-3.15 (Universal2 = x86_64 + ARM64 in single binary)
7+ # - Linux: Python 3.10-3.15 on manylinux/musllinux (x86_64 + ARM64)
88#
99# Security Features:
1010# - ESRP code signing (Windows .pyd files only)
@@ -82,19 +82,19 @@ parameters:
8282 # PLATFORM CONFIGURATIONS
8383 # =========================
8484 # Each platform uses different matrix strategy:
85- # - Windows: Explicit per-version stages (9 stages for x64/ARM64 combos)
86- # - macOS: Explicit per-version stages (5 stages for universal2 builds)
85+ # - Windows: Explicit per-version stages (11 stages for x64/ARM64 combos)
86+ # - macOS: Explicit per-version stages (6 stages for universal2 builds)
8787 # - Linux: Per-distro stages, builds ALL Python versions in loop (4 stages)
8888
8989 # Windows Configuration Matrix
9090 # Each entry creates separate stage: Win_py<pyVer>_<arch>
91- # pyVer format: '310' = Python 3.10, '314 ' = Python 3.14
91+ # pyVer format: '310' = Python 3.10, '315 ' = Python 3.15
9292 # arch: 'x64' (Intel/AMD 64-bit) or 'arm64' (ARM64, cross-compiled on x64)
9393 # Note: ARM64 builds use x64 host with ARM64 python.lib for cross-compilation
9494 - name : windowsConfigs
9595 type : object
9696 default :
97- # x64 builds (5 versions: 3.10-3.14 )
97+ # x64 builds (6 versions: 3.10-3.15 )
9898 - pyVer : ' 310'
9999 arch : ' x64'
100100 - pyVer : ' 311'
@@ -105,7 +105,9 @@ parameters:
105105 arch : ' x64'
106106 - pyVer : ' 314'
107107 arch : ' x64'
108- # ARM64 builds (4 versions: 3.11-3.14)
108+ - pyVer : ' 315'
109+ arch : ' x64'
110+ # ARM64 builds (5 versions: 3.11-3.15)
109111 # 3.10 excluded due to limited ARM64 support
110112 - pyVer : ' 311'
111113 arch : ' arm64'
@@ -115,23 +117,26 @@ parameters:
115117 arch : ' arm64'
116118 - pyVer : ' 314'
117119 arch : ' arm64'
120+ - pyVer : ' 315'
121+ arch : ' arm64'
118122
119123 # macOS Configuration Matrix
120124 # Each entry creates separate stage: MacOS_py<pyVer>
121125 # All builds are Universal2 (x86_64 + ARM64 in single binary)
122- # pyVer format: '310' = Python 3.10, '314 ' = Python 3.14
126+ # pyVer format: '310' = Python 3.10, '315 ' = Python 3.15
123127 - name : macosConfigs
124128 type : object
125129 default :
126- # 5 versions: 3.10-3.14 (all universal2)
130+ # 6 versions: 3.10-3.15 (all universal2)
127131 - pyVer : ' 310'
128132 - pyVer : ' 311'
129133 - pyVer : ' 312'
130134 - pyVer : ' 313'
131135 - pyVer : ' 314'
136+ - pyVer : ' 315'
132137
133138 # Linux Configuration Matrix
134- # Each entry creates ONE stage that builds ALL Python versions (3.10-3.14 )
139+ # Each entry creates ONE stage that builds ALL Python versions (3.10-3.15 )
135140 # tag: 'manylinux' (glibc-based, e.g., Ubuntu/CentOS) or 'musllinux' (musl-based, e.g., Alpine)
136141 # arch: CPU architecture for Docker platform
137142 # platform: Docker platform identifier for multi-arch builds
@@ -375,17 +380,17 @@ extends:
375380 # =========================
376381 # PIPELINE STAGES
377382 # =========================
378- # mssql-python: 9 Windows + 5 macOS + 4 Linux + 1 Consolidate = 19 stages
383+ # mssql-python: 11 Windows + 6 macOS + 4 Linux + 1 Consolidate = 22 stages
379384 # mssql-python-odbc: 1 ODBC_BuildAll (single host, all 7 wheels) + 1 ConsolidateOdbc = 2 stages
380- # Total: 21 stages, always built together. The mssql-python build stages depend on
385+ # Total: 24 stages, always built together. The mssql-python build stages depend on
381386 # ConsolidateOdbc so they install the external ODBC wheel before pytest.
382387 stages :
383388 # =========================
384389 # WINDOWS BUILD STAGES
385390 # =========================
386391 # Strategy: Explicit stage per Python version × architecture
387- # Total: 9 stages (5 x64 + 4 ARM64)
388- # Python versions: 3.10-3.14 (x64), 3.11-3.14 (ARM64)
392+ # Total: 11 stages (6 x64 + 5 ARM64)
393+ # Python versions: 3.10-3.15 (x64), 3.11-3.15 (ARM64)
389394 # Each stage:
390395 # 1. Installs Python (UsePythonVersion or NuGet for 3.14)
391396 # 2. Downloads ARM64 python.lib if cross-compiling
@@ -416,7 +421,7 @@ extends:
416421 # MACOS BUILD STAGES
417422 # =========================
418423 # Strategy: Explicit stage per Python version
419- # Total: 5 stages (3.10-3.14 )
424+ # Total: 6 stages (3.10-3.15 )
420425 # All builds are Universal2 (x86_64 + ARM64 in single .so binary)
421426 # Each stage:
422427 # 1. Installs Python via UsePythonVersion@0
@@ -446,20 +451,20 @@ extends:
446451 # =========================
447452 # Strategy: One stage per distribution × architecture
448453 # Total: 4 stages (manylinux_2_28×2 + musllinux×2)
449- # Each stage builds ALL Python versions (3.10-3.14 ) in a loop
454+ # Each stage builds ALL Python versions (3.10-3.15 ) in a loop
450455 # Distributions:
451456 # - manylinux_2_28: glibc 2.28+ (RHEL 8, Ubuntu 20.04+, etc.) — forward-compatible with newer glibc
452457 # - musllinux: musl-based (Alpine Linux)
453458 # Architectures: x86_64 (AMD/Intel), aarch64 (ARM64)
454459 # Each stage:
455460 # 1. Starts PyPA Docker container (manylinux_2_28 or musllinux_1_2)
456461 # 2. Starts SQL Server Docker container
457- # 3. For each Python version (cp310-cp314 ):
462+ # 3. For each Python version (cp310-cp315 ):
458463 # a. Builds .so native extension
459464 # b. Builds wheel
460465 # c. Installs wheel in isolated directory
461466 # d. Runs pytest against SQL Server
462- # 4. Publishes artifacts (all 5 wheels)
467+ # 4. Publishes artifacts (all 6 wheels)
463468 # 5. Component Governance + AntiMalware scanning
464469 - ${{ each config in parameters.linuxConfigs }} :
465470 - template : /OneBranchPipelines/stages/build-linux-single-stage.yml@self
@@ -479,7 +484,7 @@ extends:
479484 # CONSOLIDATE STAGE
480485 # =========================
481486 # Purpose: Collect all artifacts from platform builds into single dist/ folder
482- # Dependencies: All 18 build stages (9 Windows + 5 macOS + 4 Linux)
487+ # Dependencies: All 21 build stages (11 Windows + 6 macOS + 4 Linux)
483488 # Stages run in parallel, Consolidate waits for ALL to complete
484489 # Outputs:
485490 # - dist/wheels/*.whl (all platform wheels)
@@ -490,22 +495,25 @@ extends:
490495 - stage : Consolidate
491496 displayName : ' Consolidate All Artifacts'
492497 dependsOn :
493- # Windows dependencies (9 stages)
498+ # Windows dependencies (11 stages)
494499 - Win_py310_x64
495500 - Win_py311_x64
496501 - Win_py312_x64
497502 - Win_py313_x64
498503 - Win_py314_x64
504+ - Win_py315_x64
499505 - Win_py311_arm64
500506 - Win_py312_arm64
501507 - Win_py313_arm64
502508 - Win_py314_arm64
503- # macOS dependencies (5 stages)
509+ - Win_py315_arm64
510+ # macOS dependencies (6 stages)
504511 - MacOS_py310
505512 - MacOS_py311
506513 - MacOS_py312
507514 - MacOS_py313
508515 - MacOS_py314
516+ - MacOS_py315
509517 # Linux dependencies (4 stages)
510518 - Linux_manylinux_2_28_x86_64
511519 - Linux_manylinux_2_28_aarch64
0 commit comments