diff --git a/OneBranchPipelines/stages/build-linux-single-stage.yml b/OneBranchPipelines/stages/build-linux-single-stage.yml index 06565f34b..e50123769 100644 --- a/OneBranchPipelines/stages/build-linux-single-stage.yml +++ b/OneBranchPipelines/stages/build-linux-single-stage.yml @@ -48,8 +48,8 @@ stages: name: Python-1ES-pool demands: - imageOverride -equals PYTHON-1ES-UB2404 - # Extended timeout for multi-version builds + testing (5 Python versions × build + test time) - timeoutInMinutes: 120 + # Six serial build/test cycles exceed two hours under QEMU-based ARM64 emulation. + timeoutInMinutes: 180 variables: # Disable BinSkim for Linux - requires ICU libraries not available in manylinux/musllinux containers @@ -433,6 +433,8 @@ stages: ' fi + # Avoid accumulating six copies of the test tree on emulated ARM64 jobs. + docker exec build-$(LINUX_TAG)-$(ARCH) $SHELL_EXE -lc "rm -rf /test_isolated_${PYBIN}" echo "✓ Build and test complete for $PYBIN" done @@ -448,7 +450,7 @@ stages: - script: | set -euo pipefail - # Copy all wheels (5 Python versions) to output directory + # Copy all wheels (6 Python versions) to output directory echo "Copying wheels to host..." docker cp build-$(LINUX_TAG)-$(ARCH):/workspace/dist/. "$(ob_outputDirectory)/wheels/" || echo "No wheels found" diff --git a/OneBranchPipelines/stages/build-macos-single-stage.yml b/OneBranchPipelines/stages/build-macos-single-stage.yml index 9d94245f5..65909d55b 100644 --- a/OneBranchPipelines/stages/build-macos-single-stage.yml +++ b/OneBranchPipelines/stages/build-macos-single-stage.yml @@ -91,13 +91,13 @@ stages: # ========================= # BUILD TOOLS # ========================= - # CMake = cross-platform build system generator (needed for C++ compilation) - # Uninstall first to ensure clean version (avoid conflicts with pre-installed CMake) + # Install all Homebrew tooling in one transaction, matching PR validation. + # Do not run brew update: hosted runners already provide bottle metadata, + # while updating can select formulae that compile Go and Lima from source. - script: | - brew update brew uninstall cmake --ignore-dependencies || echo "CMake not installed" - brew install cmake - displayName: 'Install CMake' + brew install cmake docker colima + displayName: 'Install build & container tooling (Homebrew)' # ========================= # PYTHON DEPENDENCIES @@ -133,22 +133,15 @@ stages: TargetFolder: '$(ob_outputDirectory)/bindings/macOS' displayName: 'Copy .so files' - # Install Docker CLI and Colima (macOS Docker runtime) + # Start Colima (macOS Docker runtime). Tooling is installed above so the + # 15-minute timeout covers only VM startup, not Homebrew compilation. # Colima = lightweight Docker Desktop alternative using macOS virtualization - # vz = native macOS virtualization (faster, only works on M1+) - # qemu = cross-platform emulator (slower, works on Intel Macs) # 4 CPU cores + 8GB RAM needed for SQL Server container - script: | - brew update - brew install docker colima - colima start --vm-type vz --cpu 4 --memory 8 || { - echo "vz VM failed, trying qemu..." - colima start --vm-type qemu --cpu 4 --memory 8 - } - sleep 30 + colima start --cpu 4 --memory 8 --disk 50 docker context use colima >/dev/null || true docker version - displayName: 'Install and start Docker (Colima)' + displayName: 'Start Docker (Colima)' timeoutInMinutes: 15 # =========================