diff --git a/.env b/.env index a94803cc3277c..7a78e2dc483cb 100644 --- a/.env +++ b/.env @@ -95,8 +95,8 @@ VCPKG="f7423ee180c4b7f40d43402c2feb3859161ef625" # 2024.06.15 Release # ci/docker/python-*-windows-*.dockerfile or the vcpkg config. # This is a workaround for our CI problem that "archery docker build" doesn't # use pulled built images in dev/tasks/python-wheels/github.windows.yml. -PYTHON_WHEEL_WINDOWS_IMAGE_REVISION=2025-02-03 -PYTHON_WHEEL_WINDOWS_TEST_IMAGE_REVISION=2025-01-27 +PYTHON_WHEEL_WINDOWS_IMAGE_REVISION=ltsc2022-KB5049983 +PYTHON_WHEEL_WINDOWS_TEST_IMAGE_REVISION=ltsc2022-KB5049983 # Use conanio/${CONAN_BASE}:{CONAN_VERSION} for "docker compose run --rm conan". # See https://github.com/conan-io/conan-docker-tools#readme and diff --git a/ci/docker/python-free-threaded-wheel-windows-test-vs2019.dockerfile b/ci/docker/python-free-threaded-wheel-windows-test-vs2022.dockerfile similarity index 100% rename from ci/docker/python-free-threaded-wheel-windows-test-vs2019.dockerfile rename to ci/docker/python-free-threaded-wheel-windows-test-vs2022.dockerfile diff --git a/ci/docker/python-free-threaded-wheel-windows-vs2019.dockerfile b/ci/docker/python-free-threaded-wheel-windows-vs2022.dockerfile similarity index 100% rename from ci/docker/python-free-threaded-wheel-windows-vs2019.dockerfile rename to ci/docker/python-free-threaded-wheel-windows-vs2022.dockerfile diff --git a/ci/docker/python-wheel-windows-test-vs2019-base.dockerfile b/ci/docker/python-wheel-windows-test-vs2019-base.dockerfile deleted file mode 100644 index 73a78da30b907..0000000000000 --- a/ci/docker/python-wheel-windows-test-vs2019-base.dockerfile +++ /dev/null @@ -1,51 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -# NOTE: You must update PYTHON_WHEEL_WINDOWS_TEST_IMAGE_REVISION in .env -# when you update this file. - -# based on mcr.microsoft.com/windows/servercore:ltsc2019 -# contains choco and vs2019 preinstalled -FROM abrarov/msvc-2019:2.11.0 - -# hadolint shell=cmd.exe - -# Add unix tools to path -RUN setx path "%path%;C:\Program Files\Git\usr\bin" - -# 1. Remove previous installations of Python from the base image -# NOTE: a more recent base image (tried with 2.12.1) comes with Python 3.9.7 -# and the MSI installers are failing to remove pip and tcl/tk "products" making -# the subsequent choco python installation step failing for installing Python -# version 3.9.* due to existing python version -# 2. Install Minio for S3 testing. -RUN wmic product where "name like 'python%%'" call uninstall /nointeractive && \ - rm -rf Python* && \ - curl https://dl.min.io/server/minio/release/windows-amd64/archive/minio.RELEASE.2024-09-13T20-26-02Z \ - --output "C:\Windows\Minio.exe" - -# Install archiver to extract xz archives (for timezone database). -# Install the GCS testbench using a well-known Python version. -# NOTE: cannot use pipx's `--fetch-missing-python` because of -# https://github.com/pypa/pipx/issues/1521, therefore download Python ourselves. -RUN choco install --no-progress -r -y archiver && \ - choco install -r -y --pre --no-progress python --version=3.11.9 -ENV PIPX_BIN_DIR=C:\\Windows\\ -ENV PIPX_PYTHON="C:\Python311\python.exe" -COPY ci/scripts/install_gcs_testbench.bat C:/arrow/ci/scripts/ -RUN call "C:\arrow\ci\scripts\install_gcs_testbench.bat" && \ - storage-testbench -h diff --git a/ci/docker/python-wheel-windows-test-vs2022-base.dockerfile b/ci/docker/python-wheel-windows-test-vs2022-base.dockerfile new file mode 100644 index 0000000000000..59df5d7d3137f --- /dev/null +++ b/ci/docker/python-wheel-windows-test-vs2022-base.dockerfile @@ -0,0 +1,67 @@ +# escape=` + +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# NOTE: You must update PYTHON_WHEEL_WINDOWS_TEST_IMAGE_REVISION in .env +# when you update this file. + +FROM mcr.microsoft.com/windows/servercore:ltsc2022 + +# Ensure we in a command shell and not Powershell +SHELL ["cmd", "/S", "/C"] + +# Install MSVC BuildTools +# +# The set of components below (lines starting with --add) is the most minimal +# set we could find that would still compile Arrow C++. +RUN ` + curl -SL --output vs_buildtools.exe https://aka.ms/vs/17/release/vs_buildtools.exe ` + && (start /w vs_buildtools.exe --quiet --wait --norestart --nocache ` + --installPath "%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools" ` + --add Microsoft.VisualStudio.Component.VC.CoreBuildTools ` + --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 ` + --add Microsoft.VisualStudio.Component.Windows10SDK.20348 ` + --add Microsoft.VisualStudio.Component.VC.CMake.Project ` + || IF "%ERRORLEVEL%"=="3010" EXIT 0) ` + && del /q vs_buildtools.exe + +# Install choco CLI +# +# We switch into Powershell just for this command and switch back to cmd +# See https://chocolatey.org/install#completely-offline-install +SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] +RUN ` + Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) +SHELL ["cmd", "/S", "/C"] + +# Install git, wget, minio +RUN choco install --no-progress -r -y git wget +RUN curl https://dl.min.io/server/minio/release/windows-amd64/archive/minio.RELEASE.2024-09-13T20-26-02Z ` + --output "C:\Windows\Minio.exe" + +# Install archiver to extract xz archives (for timezone database). +# Install the GCS testbench using a well-known Python version. +# NOTE: cannot use pipx's `--fetch-missing-python` because of +# https://github.com/pypa/pipx/issues/1521, therefore download Python ourselves. +RUN choco install --no-progress -r -y archiver && ` + choco install -r -y --pre --no-progress python --version=3.11.9 +ENV PIPX_BIN_DIR=C:\\Windows\\ +ENV PIPX_PYTHON="C:\Python311\python.exe" +COPY ci/scripts/install_gcs_testbench.bat C:/arrow/ci/scripts/ +RUN call "C:\arrow\ci\scripts\install_gcs_testbench.bat" && ` + storage-testbench -h diff --git a/ci/docker/python-wheel-windows-test-vs2019.dockerfile b/ci/docker/python-wheel-windows-test-vs2022.dockerfile similarity index 100% rename from ci/docker/python-wheel-windows-test-vs2019.dockerfile rename to ci/docker/python-wheel-windows-test-vs2022.dockerfile diff --git a/ci/docker/python-wheel-windows-vs2019-base.dockerfile b/ci/docker/python-wheel-windows-vs2019-base.dockerfile deleted file mode 100644 index bd91f01bf9b6d..0000000000000 --- a/ci/docker/python-wheel-windows-vs2019-base.dockerfile +++ /dev/null @@ -1,79 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -# NOTE: You must update PYTHON_WHEEL_WINDOWS_IMAGE_REVISION in .env -# when you update this file. - -# based on mcr.microsoft.com/windows/servercore:ltsc2019 -# contains choco and vs2019 preinstalled -FROM abrarov/msvc-2019:2.11.0 - -# Install CMake and Ninja -ARG cmake=3.31.2 -RUN choco install --no-progress -r -y cmake --version=%cmake% --installargs 'ADD_CMAKE_TO_PATH=System' && \ - choco install --no-progress -r -y gzip wget ninja - -# Add unix tools to path -RUN setx path "%path%;C:\Program Files\Git\usr\bin" - -# Install vcpkg -# -# Compiling vcpkg itself from a git tag doesn't work anymore since vcpkg has -# started to ship precompiled binaries for the vcpkg-tool. -ARG vcpkg -COPY ci/vcpkg/*.patch \ - ci/vcpkg/*windows*.cmake \ - arrow/ci/vcpkg/ -COPY ci/scripts/install_vcpkg.sh arrow/ci/scripts/ -ENV VCPKG_ROOT=C:\\vcpkg -RUN bash arrow/ci/scripts/install_vcpkg.sh /c/vcpkg %vcpkg% && \ - setx PATH "%PATH%;%VCPKG_ROOT%" - -# Configure vcpkg and install dependencies -# NOTE: use windows batch environment notation for build arguments in RUN -# statements but bash notation in ENV statements -# VCPKG_FORCE_SYSTEM_BINARIES=1 spare around ~750MB of image size if the system -# cmake's and ninja's versions are recent enough -ARG build_type=release -ENV CMAKE_BUILD_TYPE=${build_type} \ - VCPKG_OVERLAY_TRIPLETS=C:\\arrow\\ci\\vcpkg \ - VCPKG_DEFAULT_TRIPLET=amd64-windows-static-md-${build_type} \ - VCPKG_FEATURE_FLAGS="manifests" -COPY ci/vcpkg/vcpkg.json arrow/ci/vcpkg/ -# cannot use the S3 feature here because while aws-sdk-cpp=1.9.160 contains -# ssl related fixes as well as we can patch the vcpkg portfile to support -# arm machines it hits ARROW-15141 where we would need to fall back to 1.8.186 -# but we cannot patch those portfiles since vcpkg-tool handles the checkout of -# previous versions => use bundled S3 build -RUN vcpkg install \ - --clean-after-build \ - --x-install-root=%VCPKG_ROOT%\installed \ - --x-manifest-root=arrow/ci/vcpkg \ - --x-feature=flight \ - --x-feature=gcs \ - --x-feature=json \ - --x-feature=orc \ - --x-feature=parquet \ - --x-feature=s3 - -# Remove previous installations of Python from the base image -# NOTE: a more recent base image (tried with 2.12.1) comes with Python 3.9.7 -# and the MSI installers are failing to remove pip and tcl/tk "products" making -# the subsequent choco python installation step failing for installing Python -# version 3.9.* due to existing Python version -RUN wmic product where "name like 'python%%'" call uninstall /nointeractive && \ - rm -rf Python* diff --git a/ci/docker/python-wheel-windows-vs2019.dockerfile b/ci/docker/python-wheel-windows-vs2022.dockerfile similarity index 80% rename from ci/docker/python-wheel-windows-vs2019.dockerfile rename to ci/docker/python-wheel-windows-vs2022.dockerfile index 50e942fd6bd5c..accd2d0af5e20 100644 --- a/ci/docker/python-wheel-windows-vs2019.dockerfile +++ b/ci/docker/python-wheel-windows-vs2022.dockerfile @@ -25,10 +25,10 @@ FROM ${base} # Note that Python 3.9 does not come with the "py" launcher ARG python=3.9 RUN (if "%python%"=="3.9" setx PYTHON_VERSION "3.9.13" && setx PYTHON_CMD "C:\Python39\python") & \ - (if "%python%"=="3.10" setx PYTHON_VERSION "3.10.11" && setx PYTHON_CMD "py -3.10") & \ - (if "%python%"=="3.11" setx PYTHON_VERSION "3.11.9" && setx PYTHON_CMD "py -3.11") & \ - (if "%python%"=="3.12" setx PYTHON_VERSION "3.12.8" && setx PYTHON_CMD "py -3.12") & \ - (if "%python%"=="3.13" setx PYTHON_VERSION "3.13.1" && setx PYTHON_CMD "py -3.13") + (if "%python%"=="3.10" setx PYTHON_VERSION "3.10.11" && setx PYTHON_CMD "py -3.10") & \ + (if "%python%"=="3.11" setx PYTHON_VERSION "3.11.9" && setx PYTHON_CMD "py -3.11") & \ + (if "%python%"=="3.12" setx PYTHON_VERSION "3.12.8" && setx PYTHON_CMD "py -3.12") & \ + (if "%python%"=="3.13" setx PYTHON_VERSION "3.13.1" && setx PYTHON_CMD "py -3.13") RUN choco install -r -y --pre --no-progress python --version=%PYTHON_VERSION% RUN %PYTHON_CMD% -m pip install -U pip setuptools diff --git a/dev/tasks/python-wheels/github.windows.yml b/dev/tasks/python-wheels/github.windows.yml index 2ac942d5bdb4d..02f28a1edb0f8 100644 --- a/dev/tasks/python-wheels/github.windows.yml +++ b/dev/tasks/python-wheels/github.windows.yml @@ -22,7 +22,7 @@ jobs: build: name: "Build wheel for Windows" - runs-on: windows-2019 + runs-on: windows-2022 env: # archery uses this environment variable PYTHON: "{{ python_version }}" @@ -30,7 +30,7 @@ jobs: # this is a private repository at the moment (mostly because of licensing # consideration of windows images with visual studio), but anyone can # recreate the image by manually building it via: - # `archery build python-wheel-windows-vs2019` + # `archery build python-wheel-windows-vs2022` # note that we don't run docker build since there wouldn't be a cache hit # and rebuilding the dependencies takes a fair amount of time REPO: ghcr.io/ursacomputing/arrow @@ -62,15 +62,15 @@ jobs: run: | cd arrow @rem We want to use only - @rem archery docker run -e SETUPTOOLS_SCM_PRETEND_VERSION={{ arrow.no_rc_version }} python-wheel-windows-vs2019 + @rem archery docker run -e SETUPTOOLS_SCM_PRETEND_VERSION={{ arrow.no_rc_version }} python-wheel-windows-vs2022 @rem but it doesn't use pulled caches. @rem It always build an image from scratch. @rem We can remove this workaround once we find a way to use @rem pulled caches when build an image. echo on - archery docker pull --no-ignore-pull-failures %TEST_IMAGE_PREFIX%-wheel-windows-vs2019 + archery docker pull --no-ignore-pull-failures %TEST_IMAGE_PREFIX%-wheel-windows-vs2022 if errorlevel 1 ( - archery docker build --no-pull %TEST_IMAGE_PREFIX%-wheel-windows-vs2019 || exit /B 1 + archery docker build --no-pull %TEST_IMAGE_PREFIX%-wheel-windows-vs2022 || exit /B 1 ) archery docker run --no-build -e SETUPTOOLS_SCM_PRETEND_VERSION={{ arrow.no_rc_version }} %TEST_IMAGE_PREFIX%-wheel-windows-vs2019 diff --git a/docker-compose.yml b/docker-compose.yml index bf8093ec60307..0285de2df3220 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -175,9 +175,9 @@ x-hierarchy: - python-free-threaded-wheel-manylinux-test-imports - python-wheel-manylinux-test-unittests - python-free-threaded-wheel-manylinux-test-unittests - - python-wheel-windows-vs2019-base: - - python-wheel-windows-vs2019 - - python-free-threaded-wheel-windows-vs2019 + - python-wheel-windows-vs2022-base: + - python-wheel-windows-vs2022 + - python-free-threaded-wheel-windows-vs2022 - python-wheel-windows-test-base: - python-wheel-windows-test - python-free-threaded-wheel-windows-test @@ -1266,81 +1266,81 @@ services: CHECK_UNITTESTS: "ON" command: /arrow/ci/scripts/python_wheel_unix_test.sh /arrow - python-wheel-windows-vs2019-base: - image: ${REPO}:python-wheel-windows-vs2019-base-vcpkg-${VCPKG}-${PYTHON_WHEEL_WINDOWS_IMAGE_REVISION} + python-wheel-windows-vs2022-base: + image: ${REPO}:python-wheel-windows-vs2022-base-vcpkg-${VCPKG}-${PYTHON_WHEEL_WINDOWS_IMAGE_REVISION} build: args: vcpkg: ${VCPKG} context: . - dockerfile: ci/docker/python-wheel-windows-vs2019-base.dockerfile + dockerfile: ci/docker/python-wheel-windows-vs2022-base.dockerfile # This should make the pushed images reusable, but the image gets rebuilt. # Uncomment if no local cache is available. # cache_from: - # - abrarov/msvc-2019:2.11.0 - # - ${REPO}:python-wheel-windows-vs2019-base-vcpkg-${VCPKG}-${PYTHON_WHEEL_WINDOWS_IMAGE_REVISION} - volumes: &python-wheel-windows-vs2019-volumes + # - mcr.microsoft.com/windows/servercore:ltsc2022 + # - ${REPO}:python-wheel-windows-vs2022-base-vcpkg-${VCPKG}-${PYTHON_WHEEL_WINDOWS_IMAGE_REVISION} + volumes: &python-wheel-windows-vs2022-volumes - type: bind source: . target: "C:/arrow" - python-wheel-windows-vs2019: - image: ${REPO}:python-${PYTHON}-wheel-windows-vs2019-vcpkg-${VCPKG}-${PYTHON_WHEEL_WINDOWS_IMAGE_REVISION} + python-wheel-windows-vs2022: + image: ${REPO}:python-${PYTHON}-wheel-windows-vs2022-vcpkg-${VCPKG}-${PYTHON_WHEEL_WINDOWS_IMAGE_REVISION} build: args: - base: ${REPO}:python-wheel-windows-vs2019-base-vcpkg-${VCPKG}-${PYTHON_WHEEL_WINDOWS_IMAGE_REVISION} + base: ${REPO}:python-wheel-windows-vs2022-base-vcpkg-${VCPKG}-${PYTHON_WHEEL_WINDOWS_IMAGE_REVISION} python: ${PYTHON} context: . - dockerfile: ci/docker/python-wheel-windows-vs2019.dockerfile + dockerfile: ci/docker/python-wheel-windows-vs2022.dockerfile # This should make the pushed images reusable, but the image gets rebuilt. # Uncomment if no local cache is available. # cache_from: - # - abrarov/msvc-2019:2.11.0 - # - ${REPO}:python-${PYTHON}-wheel-windows-vs2019-vcpkg-${VCPKG}-${PYTHON_WHEEL_WINDOWS_IMAGE_REVISION} - volumes: *python-wheel-windows-vs2019-volumes + # - mcr.microsoft.com/windows/servercore:ltsc2022 + # - ${REPO}:python-${PYTHON}-wheel-windows-vs2022-vcpkg-${VCPKG}-${PYTHON_WHEEL_WINDOWS_IMAGE_REVISION} + volumes: *python-wheel-windows-vs2022-volumes command: arrow\\ci\\scripts\\python_wheel_windows_build.bat - python-free-threaded-wheel-windows-vs2019: - image: ${REPO}:python-${PYTHON}-free-threaded-wheel-windows-vs2019-vcpkg-${VCPKG}-${PYTHON_WHEEL_WINDOWS_IMAGE_REVISION} + python-free-threaded-wheel-windows-vs2022: + image: ${REPO}:python-${PYTHON}-free-threaded-wheel-windows-vs2022-vcpkg-${VCPKG}-${PYTHON_WHEEL_WINDOWS_IMAGE_REVISION} build: args: - base: ${REPO}:python-wheel-windows-vs2019-base-vcpkg-${VCPKG}-${PYTHON_WHEEL_WINDOWS_IMAGE_REVISION} + base: ${REPO}:python-wheel-windows-vs2022-base-vcpkg-${VCPKG}-${PYTHON_WHEEL_WINDOWS_IMAGE_REVISION} python: ${PYTHON} context: . - dockerfile: ci/docker/python-free-threaded-wheel-windows-vs2019.dockerfile + dockerfile: ci/docker/python-free-threaded-wheel-windows-vs2022.dockerfile # This should make the pushed images reusable, but the image gets rebuilt. # Uncomment if no local cache is available. # cache_from: - # - abrarov/msvc-2019:2.11.0 - # - ${REPO}:python-${PYTHON}-free-threaded-wheel-windows-vs2019-vcpkg-${VCPKG}-${PYTHON_WHEEL_WINDOWS_IMAGE_REVISION} - volumes: *python-wheel-windows-vs2019-volumes + # - mcr.microsoft.com/windows/servercore:ltsc2022 + # - ${REPO}:python-${PYTHON}-free-threaded-wheel-windows-vs2022-vcpkg-${VCPKG}-${PYTHON_WHEEL_WINDOWS_IMAGE_REVISION} + volumes: *python-wheel-windows-vs2022-volumes command: arrow\\ci\\scripts\\python_wheel_windows_build.bat python-wheel-windows-test-base: - image: ${REPO}:python-wheel-windows-test-vs2019-base-${PYTHON_WHEEL_WINDOWS_TEST_IMAGE_REVISION} + image: ${REPO}:python-wheel-windows-test-vs2022-base-${PYTHON_WHEEL_WINDOWS_TEST_IMAGE_REVISION} build: context: . - dockerfile: ci/docker/python-wheel-windows-test-vs2019-base.dockerfile - volumes: *python-wheel-windows-vs2019-volumes + dockerfile: ci/docker/python-wheel-windows-test-vs2022-base.dockerfile + volumes: *python-wheel-windows-vs2022-volumes python-wheel-windows-test: - image: ${REPO}:python-${PYTHON}-wheel-windows-test-vs2019-${PYTHON_WHEEL_WINDOWS_TEST_IMAGE_REVISION} + image: ${REPO}:python-${PYTHON}-wheel-windows-test-vs2022-${PYTHON_WHEEL_WINDOWS_TEST_IMAGE_REVISION} build: args: - base: ${REPO}:python-wheel-windows-test-vs2019-base-${PYTHON_WHEEL_WINDOWS_TEST_IMAGE_REVISION} + base: ${REPO}:python-wheel-windows-test-vs2022-base-${PYTHON_WHEEL_WINDOWS_TEST_IMAGE_REVISION} python: ${PYTHON} context: . - dockerfile: ci/docker/python-wheel-windows-test-vs2019.dockerfile - volumes: *python-wheel-windows-vs2019-volumes + dockerfile: ci/docker/python-wheel-windows-test-vs2022.dockerfile + volumes: *python-wheel-windows-vs2022-volumes command: arrow\\ci\\scripts\\python_wheel_windows_test.bat python-free-threaded-wheel-windows-test: - image: ${REPO}:python-${PYTHON}-free-threaded-wheel-windows-test-vs2019-${PYTHON_WHEEL_WINDOWS_TEST_IMAGE_REVISION} + image: ${REPO}:python-${PYTHON}-free-threaded-wheel-windows-test-vs2022-${PYTHON_WHEEL_WINDOWS_TEST_IMAGE_REVISION} build: args: - base: ${REPO}:python-wheel-windows-test-vs2019-base-${PYTHON_WHEEL_WINDOWS_TEST_IMAGE_REVISION} + base: ${REPO}:python-wheel-windows-test-vs2022-base-${PYTHON_WHEEL_WINDOWS_TEST_IMAGE_REVISION} context: . - dockerfile: ci/docker/python-free-threaded-wheel-windows-test-vs2019.dockerfile - volumes: *python-wheel-windows-vs2019-volumes + dockerfile: ci/docker/python-free-threaded-wheel-windows-test-vs2022.dockerfile + volumes: *python-wheel-windows-vs2022-volumes command: arrow\\ci\\scripts\\python_wheel_windows_test.bat ############################## Integration #################################