| # 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. |
| |
| {% import 'macros.jinja' as macros with context %} |
| |
| {{ macros.github_header() }} |
| |
| jobs: |
| build: |
| name: "Build wheel for Windows" |
| runs-on: windows-2022 |
| env: |
| # archery uses this environment variable |
| PYTHON: "{{ python_version }}" |
| PYTHON_ABI_TAG: "{{ python_abi_tag }}" |
| # 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-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 |
| # BuildKit isn't really supported on Windows for now. |
| # NuGet + GitHub Packages based vcpkg cache is also disabled for now. |
| # Because secret mount requires BuildKit. |
| DOCKER_BUILDKIT: 0 |
| |
| steps: |
| {{ macros.github_checkout_arrow()|indent }} |
| {{ macros.github_login_ghcr()|indent }} |
| {{ macros.github_install_archery()|indent }} |
| |
| - name: Prepare |
| shell: bash |
| run: | |
| case "${PYTHON_ABI_TAG}" in |
| *t) |
| test_image_prefix=python-free-threaded |
| ;; |
| *) |
| test_image_prefix=python |
| ;; |
| esac |
| echo "TEST_IMAGE_PREFIX=${test_image_prefix}" >> ${GITHUB_ENV} |
| |
| - name: Build wheel |
| shell: cmd |
| 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-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-vs2022 |
| if errorlevel 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-vs2022 |
| |
| - uses: actions/upload-artifact@v4 |
| with: |
| name: wheel |
| path: arrow/python/repaired_wheels/*.whl |
| |
| - name: Test wheel |
| shell: cmd |
| run: | |
| cd arrow |
| archery docker pull --no-ignore-pull-failures %TEST_IMAGE_PREFIX%-wheel-windows-test |
| if errorlevel 1 ( |
| archery docker build --no-pull %TEST_IMAGE_PREFIX%-wheel-windows-test || exit /B 1 |
| ) |
| archery docker run %TEST_IMAGE_PREFIX%-wheel-windows-test |
| |
| {{ macros.github_upload_releases("arrow/python/repaired_wheels/*.whl")|indent }} |
| {{ macros.github_upload_wheel_scientific_python("arrow/python/repaired_wheels/*.whl")|indent }} |
| |
| {% if arrow.is_default_branch() %} |
| - name: Push Docker image |
| shell: cmd |
| run: | |
| cd arrow |
| archery docker push %TEST_IMAGE_PREFIX%-wheel-windows-vs2022 |
| archery docker push %TEST_IMAGE_PREFIX%-wheel-windows-test |
| {% endif %} |