Skip to content

Crossbow

Crossbow #277569

Workflow file for this run

# 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: must set "Crossbow" as name to have the badge links working in the
# github comment reports!
name: Crossbow
on:
push:
branches:
- "*-github-*"
env:
ARCHERY_DEBUG: 1
jobs:
build:
name: "Build wheel for manylinux 2-28"
runs-on: ["self-hosted", "Linux", "arm64"]
env:
# archery uses these environment variables
ARCH: arm64v8
PYTHON: "3.12"
PYTHON_ABI_TAG: "cp312"
PYTHON_IMAGE_TAG: "3.12"
steps:
- name: Checkout Arrow
uses: actions/checkout@v4
with:
fetch-depth: 1
path: arrow
repository: kou/arrow
ref: a3e42bb3704ed6f0e65e6f31b828f974be131501
submodules: recursive
- name: Set up Python by actions/setup-python
if: |
!(runner.os == 'Linux' && runner.arch != 'X64')
uses: actions/setup-python@v4
with:
cache: 'pip'
python-version: 3.12
- name: Set up Python by apt
if: runner.os == 'Linux' && runner.arch != 'X64'
run: |
sudo apt update
sudo apt-get install -y python3-pip
pip install -U pip
echo "$HOME/.local/bin" >>"$GITHUB_PATH"
- name: Install Archery
shell: bash
run: pip install -e arrow/dev/archery[all]
- name: Login to Dockerhub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build wheel
shell: bash
run: archery docker run -e SETUPTOOLS_SCM_PRETEND_VERSION=18.0.0.dev452 python-wheel-manylinux-2-28
- uses: actions/upload-artifact@v4
with:
name: wheel
path: arrow/python/repaired_wheels/*.whl
# TODO(kszucs): auditwheel show
- name: Test wheel
if: |
'cp312' != 'cp313t'
shell: bash
run: |
source arrow/ci/scripts/util_enable_core_dumps.sh
archery docker run python-wheel-manylinux-test-imports
archery docker run python-wheel-manylinux-test-unittests
# Free-threaded wheels need to be tested using a different docker-compose service
- name: Test free-threaded wheel
if: |
'cp312' == 'cp313t'
shell: bash
run: |
source arrow/ci/scripts/util_enable_core_dumps.sh
archery docker run python-free-threaded-wheel-manylinux-test-imports
archery docker run python-free-threaded-wheel-manylinux-test-unittests
- name: Test wheel on AlmaLinux 8
shell: bash
if: |
'3.12' == '3.9'
env:
ALMALINUX: "8"
run: |
archery docker run \
-e ARROW_GANDIVA=OFF \
-e TEST_DEFAULT=0 \
-e TEST_PYARROW_VERSION=18.0.0.dev452 \
-e TEST_PYTHON_VERSIONS=3.12 \
-e TEST_WHEEL_PLATFORM_TAGS=manylinux_2_28_aarch64 \
-e TEST_WHEELS=1 \
almalinux-verify-rc
- name: Test wheel on Ubuntu 20.04
shell: bash
if: |
'3.12' == '3.9'
env:
UBUNTU: "20.04"
run: |
archery docker run \
-e TEST_DEFAULT=0 \
-e TEST_PYARROW_VERSION=18.0.0.dev452 \
-e TEST_PYTHON_VERSIONS=3.12 \
-e TEST_WHEEL_PLATFORM_TAGS=manylinux_2_28_aarch64 \
-e TEST_WHEELS=1 \
ubuntu-verify-rc
- name: Test wheel on Ubuntu 22.04
shell: bash
if: |
'3.12' == '3.10'
env:
UBUNTU: "22.04"
run: |
archery docker run \
-e TEST_DEFAULT=0 \
-e TEST_PYARROW_VERSION=18.0.0.dev452 \
-e TEST_PYTHON_VERSIONS=3.12 \
-e TEST_WHEEL_PLATFORM_TAGS=manylinux_2_28_aarch64 \
-e TEST_WHEELS=1 \
ubuntu-verify-rc
- name: Set up Python by actions/setup-python
if: |
!(runner.os == 'Linux' && runner.arch != 'X64')
uses: actions/setup-python@v4
with:
python-version: 3.12
- name: Set up Python by apt
if: runner.os == 'Linux' && runner.arch != 'X64'
run: |
sudo apt update
sudo apt install -y \
libgit2-dev \
libpython3-dev \
python3-pip
sudo python3 -m pip install --upgrade pip
- name: Checkout Crossbow
uses: actions/checkout@v4
with:
path: crossbow
ref: actions-2eedec14c3
- name: Setup Crossbow
shell: bash
run: |
python3 -m pip install -e arrow/dev/archery[crossbow]
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Upload artifacts
shell: bash
run: |
archery crossbow \
--queue-path $(pwd)/crossbow \
--queue-remote https://github.com/ursacomputing/crossbow \
upload-artifacts \
--sha actions-2eedec14c3-github-wheel-manylinux-2-28-cp312-cp312-arm64 \
--tag actions-2eedec14c3-github-wheel-manylinux-2-28-cp312-cp312-arm64 \
"arrow/python/repaired_wheels/*.whl"
env:
CROSSBOW_GITHUB_TOKEN: ${{ secrets.CROSSBOW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
- name: Verify uploaded artifacts
shell: bash
run: |
archery crossbow \
--queue-path $(pwd)/crossbow \
--queue-remote https://github.com/ursacomputing/crossbow \
status \
--task-filter 'wheel-manylinux-2-28-cp312-cp312-arm64' \
--no-fetch \
--validate \
actions-2eedec14c3
env:
CROSSBOW_GITHUB_TOKEN: ${{ secrets.CROSSBOW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}