blob: 77e2a04e3a0a48d17d03e8cc52e695ad2e70d2fb [file] [log] [blame]
# 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 %}