Skip to content

Commit 4079025

Browse files
committed
feat: Add windows/arm64 support and pin runner versions for reproducibility
Changes: - Add windows/arm64 as 6th supported platform - Uses windows-11-arm runner for native ARM64 builds - Updated build.sh and build-native.sh for win_arm64 platform tag - Updated both test and release workflows - Pin all GitHub runner versions for reproducibility: - linux/amd64: ubuntu-latest → ubuntu-24.04 - linux/arm64: ubuntu-24.04-arm (already pinned) - darwin/amd64: macos-13 → macos-15-intel - darwin/arm64: macos-latest → macos-15 - windows/amd64: windows-latest → windows-2025 - windows/arm64: windows-11-arm (new) All 6 platforms now use pinned, native runners with full test coverage.
1 parent 7a1a836 commit 4079025

4 files changed

Lines changed: 28 additions & 18 deletions

File tree

.github/workflows/release-python-packages.yml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
# Validate version compatibility between tag and pom.xml
1010
validate-version:
1111
name: Validate Version Compatibility
12-
runs-on: ubuntu-latest
12+
runs-on: ubuntu-24.04
1313
outputs:
1414
python-version: ${{ steps.validate.outputs.python-version }}
1515
base-version: ${{ steps.validate.outputs.base-version }}
@@ -85,19 +85,22 @@ jobs:
8585
matrix:
8686
include:
8787
- platform: linux/amd64
88-
runs-on: ubuntu-latest
88+
runs-on: ubuntu-24.04
8989
download-jars: true # Only Linux downloads JARs
9090
- platform: linux/arm64
9191
runs-on: ubuntu-24.04-arm
9292
download-jars: false # Use JARs from linux/amd64
9393
- platform: darwin/amd64
94-
runs-on: macos-13
94+
runs-on: macos-15-intel
9595
download-jars: false
9696
- platform: darwin/arm64
97-
runs-on: macos-latest
97+
runs-on: macos-15
9898
download-jars: false
9999
- platform: windows/amd64
100-
runs-on: windows-latest
100+
runs-on: windows-2025
101+
download-jars: false
102+
- platform: windows/arm64
103+
runs-on: windows-11-arm
101104
download-jars: false
102105

103106
steps:

.github/workflows/test-python-bindings.yml

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
# First job: Download ArcadeDB JARs (platform-agnostic)
1818
download-jars:
1919
name: Download ArcadeDB JARs
20-
runs-on: ubuntu-latest
20+
runs-on: ubuntu-24.04
2121
steps:
2222
- name: Checkout code
2323
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
@@ -102,15 +102,17 @@ jobs:
102102
matrix:
103103
include:
104104
- platform: linux/amd64
105-
runs-on: ubuntu-latest
105+
runs-on: ubuntu-24.04
106106
- platform: linux/arm64
107107
runs-on: ubuntu-24.04-arm
108108
- platform: darwin/amd64
109-
runs-on: macos-13
109+
runs-on: macos-15-intel
110110
- platform: darwin/arm64
111-
runs-on: macos-latest
111+
runs-on: macos-15
112112
- platform: windows/amd64
113-
runs-on: windows-latest
113+
runs-on: windows-2025
114+
- platform: windows/arm64
115+
runs-on: windows-11-arm
114116

115117
steps:
116118
- name: Checkout code
@@ -148,7 +150,7 @@ jobs:
148150
pip install build wheel setuptools
149151
150152
- name: Create python3 symlink (Windows only)
151-
if: matrix.platform == 'windows/amd64'
153+
if: matrix.platform == 'windows/amd64' || matrix.platform == 'windows/arm64'
152154
shell: bash
153155
run: |
154156
# On Windows, setup-python doesn't create python3 symlink
@@ -307,7 +309,7 @@ jobs:
307309
if: always()
308310
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
309311
with:
310-
name: test-results-${{ matrix.platform == 'linux/amd64' && 'linux-amd64' || matrix.platform == 'linux/arm64' && 'linux-arm64' || matrix.platform == 'darwin/amd64' && 'darwin-amd64' || matrix.platform == 'darwin/arm64' && 'darwin-arm64' || 'windows-amd64' }}
312+
name: test-results-${{ matrix.platform == 'linux/amd64' && 'linux-amd64' || matrix.platform == 'linux/arm64' && 'linux-arm64' || matrix.platform == 'darwin/amd64' && 'darwin-amd64' || matrix.platform == 'darwin/arm64' && 'darwin-arm64' || matrix.platform == 'windows/amd64' && 'windows-amd64' || 'windows-arm64' }}
311313
path: |
312314
bindings/python/pytest-output.txt
313315
bindings/python/.coverage
@@ -316,15 +318,15 @@ jobs:
316318
- name: Upload wheel artifact
317319
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
318320
with:
319-
name: wheel-${{ matrix.platform == 'linux/amd64' && 'linux-amd64' || matrix.platform == 'linux/arm64' && 'linux-arm64' || matrix.platform == 'darwin/amd64' && 'darwin-amd64' || matrix.platform == 'darwin/arm64' && 'darwin-arm64' || 'windows-amd64' }}-test
321+
name: wheel-${{ matrix.platform == 'linux/amd64' && 'linux-amd64' || matrix.platform == 'linux/arm64' && 'linux-arm64' || matrix.platform == 'darwin/amd64' && 'darwin-amd64' || matrix.platform == 'darwin/arm64' && 'darwin-arm64' || matrix.platform == 'windows/amd64' && 'windows-amd64' || 'windows-arm64' }}-test
320322
path: bindings/python/dist/*.whl
321323
retention-days: 7
322324

323325
# Summary job that checks all platforms
324326
test-summary:
325327
name: Test Summary
326328
needs: test
327-
runs-on: ubuntu-latest
329+
runs-on: ubuntu-24.04
328330
if: always()
329331
steps:
330332
- name: Check test results

bindings/python/build-native.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,9 @@ case "$PLATFORM" in
164164
windows/amd64)
165165
PLAT_NAME="win_amd64"
166166
;;
167+
windows/arm64)
168+
PLAT_NAME="win_arm64"
169+
;;
167170
*)
168171
echo -e "${RED}❌ Unsupported platform: ${PLATFORM}${NC}"
169172
exit 1

bindings/python/build.sh

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,25 +31,27 @@ print_usage() {
3131
echo "PLATFORM:"
3232
echo " Auto-detected if not specified"
3333
echo " linux/amd64 Linux x86_64 (Docker build)"
34-
echo " linux/arm64 Linux ARM64 (Docker build with QEMU)"
34+
echo " linux/arm64 Linux ARM64 (Docker build, native ARM64 runner)"
3535
echo " darwin/amd64 macOS x86_64 (native build on macOS)"
3636
echo " darwin/arm64 macOS ARM64 Apple Silicon (native build on macOS)"
3737
echo " windows/amd64 Windows x86_64 (native build on Windows)"
38+
echo " windows/arm64 Windows ARM64 (native build on Windows)"
3839
echo ""
3940
echo "Build Methods:"
4041
echo " Native: macOS and Windows build natively on their platforms"
41-
echo " Docker: Linux uses Docker for manylinux compliance (QEMU for ARM64)"
42+
echo " Docker: Linux uses Docker for manylinux compliance"
4243
echo ""
4344
echo "Examples:"
4445
echo " $0 # Build for current platform (auto-detect)"
4546
echo " $0 linux/amd64 # Build for Linux x86_64 (via Docker)"
46-
echo " $0 linux/arm64 # Build for Linux ARM64 (via Docker + QEMU)"
47+
echo " $0 linux/arm64 # Build for Linux ARM64 (via Docker)"
4748
echo " $0 darwin/arm64 # Build for macOS ARM64 (native on macOS)"
49+
echo " $0 windows/arm64 # Build for Windows ARM64 (native on Windows)"
4850
echo ""
4951
echo "Package features:"
5052
echo " ✅ Bundled platform-specific JRE (no Java required)"
5153
echo " ✅ Optimized JAR selection (see jar_exclusions.txt)"
52-
echo " ✅ Multi-platform support (5 platforms)"
54+
echo " ✅ Multi-platform support (6 platforms)"
5355
echo " 📦 Size: ~160MB (JRE ~63MB, JARs ~13MB, overhead ~84MB)"
5456
echo ""
5557
}

0 commit comments

Comments
 (0)