blob: 97843d2ef0cb73eb993bac0feccc77e540572f1b [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.
groups:
# these groups are just for convenience
# makes it easier to submit related tasks https://github.com/github/release-radar
{############################# Packaging tasks ###############################}
conan:
- conan-*
wheel:
- wheel-*
- python-sdist
homebrew:
- homebrew-*
packaging:
- conan-*
- matlab
- python-sdist
- r-binary-packages
- wheel-*
- test-debian-*-docs
{############################# Testing tasks #################################}
test:
- test-*
cpp:
- test-*cpp*
- example-*cpp*
c-glib:
- test-*c-glib*
python:
- test-*python*
- example-*python*
r:
- test-r-*
- r-binary-packages
- r-recheck-most
ruby:
- test-*ruby*
vcpkg:
- test-*vcpkg*
- wheel-*
integration:
- test-*dask*
- test-*hdfs*
- test-*pandas*
- test-*spark*
example:
- example-*
example-cpp:
- example-*cpp*
example-python:
- example-*python*
fuzz:
- test-*fuzz*
verify-rc:
- verify-rc-*
verify-rc-source:
- verify-rc-source-*
verify-rc-source-macos:
- verify-rc-source-*-macos-*
verify-rc-source-linux:
- verify-rc-source-*-linux-*
{######################## Tasks to run regularly #############################}
nightly:
- verify-rc-source-*
- conan-*
- homebrew-cpp
- test-*
- example-*
- wheel-*
- python-sdist
nightly-tests:
- test-*
- example-*
nightly-packaging:
- conan-*
- homebrew-cpp
- wheel-*
- python-sdist
- r-binary-packages
nightly-release:
- verify-rc-source-*
tasks:
# arbitrary_task_name:
# template: path of jinja2 templated yml
# params: optional extra parameters
# artifacts: list of regex patterns, each needs to match a single github
# release asset, version variable is replaced in the pattern
# e.g.:
# - pyarrow-{no_rc_version}-py38(h[a-z0-9]+)_0-linux-64.tar.bz2
############################## Conan ##################################
conan-minimum:
ci: github
template: docker-tests/github.linux.yml
params:
image: conan
push: false
conan-maximum:
ci: github
template: docker-tests/github.linux.yml
params:
flags: >-
-e ARROW_CONAN_PARQUET=True
-e ARROW_CONAN_WITH_BROTLI=True
-e ARROW_CONAN_WITH_BZ2=True
-e ARROW_CONAN_WITH_FLIGHT_RPC=True
-e ARROW_CONAN_WITH_GLOG=True
-e ARROW_CONAN_WITH_JEMALLOC=True
-e ARROW_CONAN_WITH_JSON=True
-e ARROW_CONAN_WITH_LZ4=True
-e ARROW_CONAN_WITH_SNAPPY=True
-e ARROW_CONAN_WITH_ZSTD=True
image: conan
push: false
########################### Python Minimal ############################
{% for kind in ["fedora-conda", "ubuntu-venv"] %}
example-python-minimal-build-{{ kind }}:
ci: github
template: python-minimal-build/github.linux.yml
params:
type: minimal_build
image: minimal-{{ kind }}
{% endfor %}
########################### Python Wheels ############################
{% for python_version, python_tag, abi_tag in [("3.10", "cp310", "cp310"),
("3.11", "cp311", "cp311"),
("3.12", "cp312", "cp312"),
("3.13", "cp313", "cp313"),
("3.13", "cp313", "cp313t"),
("3.14", "cp314", "cp314"),
("3.14", "cp314", "cp314t")] %}
{############################## Wheel Linux ##################################}
{% for wheel_kind, arch, version, platform_tag in [("manylinux", "amd64", "2-28", "manylinux_2_28_x86_64"),
("manylinux", "arm64", "2-28", "manylinux_2_28_aarch64"),
("musllinux", "amd64", "1-2", "musllinux_1_2_x86_64"),
("musllinux", "arm64", "1-2", "musllinux_1_2_aarch64")] %}
wheel-{{ wheel_kind }}-{{ version }}-{{ python_tag }}-{{ abi_tag }}-{{ arch }}:
ci: github
template: python-wheels/github.linux.yml
params:
arch: "{{ arch }}"
linux_wheel_kind: "{{ wheel_kind }}"
linux_wheel_version: "{{ version }}"
python_abi_tag: "{{ abi_tag }}"
python_version: "{{ python_version }}"
wheel_platform_tag: "{{ platform_tag }}"
artifacts:
- pyarrow-{no_rc_version}-{{ python_tag }}-{{ abi_tag }}-{{ platform_tag }}.whl
{% endfor %}
{############################## Wheel macOS ####################################}
wheel-macos-monterey-{{ python_tag }}-{{ abi_tag }}-amd64:
ci: github
template: python-wheels/github.osx.yml
params:
arch: "x86_64"
arrow_jemalloc: "ON"
python_version: "{{ python_version }}"
python_abi_tag: "{{ abi_tag }}"
macos_deployment_target: "12.0"
runs_on: "macos-15-intel"
vcpkg_arch: "amd64"
artifacts:
- pyarrow-{no_rc_version}-{{ python_tag }}-{{ abi_tag }}-macosx_12_0_x86_64.whl
wheel-macos-monterey-{{ python_tag }}-{{ abi_tag }}-arm64:
ci: github
template: python-wheels/github.osx.yml
params:
arch: "arm64"
arrow_jemalloc: "OFF"
python_version: "{{ python_version }}"
python_abi_tag: "{{ abi_tag }}"
macos_deployment_target: "12.0"
runs_on: "macos-14"
vcpkg_arch: "arm64"
artifacts:
- pyarrow-{no_rc_version}-{{ python_tag }}-{{ abi_tag }}-macosx_12_0_arm64.whl
{############################## Wheel Windows ################################}
wheel-windows-{{ python_tag }}-{{ abi_tag }}-amd64:
ci: github
template: python-wheels/github.windows.yml
params:
python_version: "{{ python_version }}"
python_abi_tag: "{{ abi_tag }}"
artifacts:
- pyarrow-{no_rc_version}-{{ python_tag }}-{{ abi_tag }}-win_amd64.whl
{% endfor %}
{############################ Python sdist ####################################}
python-sdist:
ci: github
template: python-sdist/github.yml
artifacts:
- pyarrow-{no_rc_version}.tar.gz
############################## Homebrew Tasks ################################
homebrew-cpp:
ci: github
template: homebrew-formulae/github.macos.yml
params:
formula: apache-arrow.rb
############################## MATLAB Packages ################################
matlab:
ci: github
template: matlab/github.yml
artifacts:
- matlab-arrow-{no_rc_no_dev_version}.mltbx
######################## R packages & binaries ##############################
r-binary-packages:
ci: github
template: r/github.packages.yml
params:
custom_version: Unset
artifacts:
- r-libarrow-windows-x86_64-{no_rc_r_version}\.zip
- r-libarrow-linux-x86_64-{no_rc_r_version}\.zip
- r-libarrow-darwin-arm64-{no_rc_r_version}\.zip
- r-libarrow-darwin-x86_64-{no_rc_r_version}\.zip
- r-pkg__bin__windows__contrib__4.5__arrow_{no_rc_r_version}\.zip
- r-pkg__bin__windows__contrib__4.4__arrow_{no_rc_r_version}\.zip
- r-pkg__bin__macosx__big-sur-x86_64__contrib__4.5__arrow_{no_rc_r_version}\.tgz
- r-pkg__bin__macosx__big-sur-x86_64__contrib__4.4__arrow_{no_rc_r_version}\.tgz
- r-pkg__bin__macosx__big-sur-arm64__contrib__4.5__arrow_{no_rc_r_version}\.tgz
- r-pkg__bin__macosx__big-sur-arm64__contrib__4.4__arrow_{no_rc_r_version}\.tgz
- r-pkg__src__contrib__arrow_{no_rc_r_version}\.tar\.gz
{% for which in ["strong", "most"] %}
# strong and most used here are defined by ?tools::package_dependencies as:
#
# strong: Depends, Imports, LinkingTo
# most: Depends, Imports, LinkingTo, Suggests
#
# So the key difference between strong and most is whether you want to expand
# the reverse dependency checking to Suggests (most) or not.
r-recheck-{{which}}:
ci: github
template: r/github.recheck.yml
params:
which: {{which}}
{% endfor %}
########################### Release verification ############################
######################## Linux verification #################################
{% for distribution, version in [("conda", "latest"),
("almalinux", "10"),
("ubuntu", "22.04"),
("ubuntu", "24.04")] %}
{% for target in ["cpp",
"integration",
"python",
"ruby"] %}
verify-rc-source-{{ target }}-linux-{{ distribution }}-{{ version }}-amd64:
ci: github
template: verify-rc/github.linux.amd64.docker.yml
params:
env:
{{ distribution.upper() }}: "{{ version }}"
target: {{ target }}
distro: {{ distribution }}
{% endfor %}
{% endfor %}
######################## macOS verification ################################
{% for target in ["cpp", "integration", "python"] %}
verify-rc-source-{{ target }}-macos-conda-amd64:
ci: github
template: verify-rc/github.macos.yml
params:
target: {{ target }}
use_conda: True
github_runner: "macos-15-intel"
{% endfor %}
{% for target in ["cpp",
"integration",
"python",
"ruby"] %}
verify-rc-source-{{ target }}-macos-amd64:
ci: github
template: verify-rc/github.macos.yml
params:
target: {{ target }}
github_runner: "macos-15-intel"
{% endfor %}
{% for target in ["cpp",
"integration",
"python",
"ruby"] %}
verify-rc-source-{{ target }}-macos-arm64:
ci: github
template: verify-rc/github.macos.yml
params:
env:
ARROW_FLIGHT: 0
ARROW_GANDIVA: 0
PYTEST_ADDOPTS: "-k 'not test_cancellation'"
target: {{ target }}
github_runner: "macos-14"
{% endfor %}
######################## Windows verification ##############################
verify-rc-source-windows:
ci: github
template: verify-rc/github.win.yml
params:
env:
PYARROW_TEST_GDB: "OFF"
script: "verify-release-candidate.bat"
timeout: 120
############################## Docker tests ##################################
{% for image in ["conda-cpp",
"debian-c-glib",
"ubuntu-c-glib",
"debian-ruby",
"ubuntu-ruby"] %}
test-{{ image }}:
ci: github
template: docker-tests/github.linux.yml
params:
env:
UBUNTU: 22.04
image: {{ image }}
{% endfor %}
test-conda-cpp-valgrind:
ci: github
template: docker-tests/github.linux.yml
params:
image: conda-cpp-valgrind
test-ubuntu-22.04-cpp:
ci: github
template: docker-tests/github.linux.yml
params:
env:
UBUNTU: 22.04
image: ubuntu-cpp
test-ubuntu-22.04-cpp-bundled:
ci: github
template: docker-tests/github.linux.yml
params:
env:
UBUNTU: 22.04
image: ubuntu-cpp-bundled
test-ubuntu-24.04-cpp-bundled-offline:
ci: github
template: docker-tests/github.linux.yml
params:
env:
UBUNTU: 24.04
image: ubuntu-cpp-bundled-offline
timeout: 120
test-ubuntu-24.04-cpp-gcc-13-bundled:
ci: github
template: docker-tests/github.linux.yml
params:
env:
UBUNTU: 24.04
GCC: 13
image: ubuntu-cpp-bundled
test-ubuntu-24.04-cpp:
ci: github
template: docker-tests/github.linux.yml
params:
env:
UBUNTU: 24.04
image: ubuntu-cpp
test-ubuntu-24.04-cpp-gcc-14:
ci: github
template: docker-tests/github.linux.yml
params:
env:
GCC: 14
UBUNTU: 24.04
# rapidjson 1.1.0 has an error caught by gcc 14.
# https://github.com/Tencent/rapidjson/issues/718
flags: -e CC=gcc-14 -e CXX=g++-14 -e RapidJSON_SOURCE=BUNDLED
image: ubuntu-cpp
{% for debian_version in ["13"] %}
test-debian-{{ debian_version }}-cpp-amd64:
ci: github
template: docker-tests/github.linux.yml
params:
env:
ARCH: "amd64"
DEBIAN: "{{ debian_version }}"
image: debian-cpp
test-debian-{{ debian_version }}-cpp-i386:
ci: github
template: docker-tests/github.linux.yml
params:
env:
ARCH: "i386"
DEBIAN: "{{ debian_version }}"
flags: "-e ARROW_AZURE=OFF -e ARROW_S3=OFF -e ARROW_GANDIVA=OFF"
image: debian-cpp
{% endfor %}
test-debian-experimental-cpp-gcc-15:
ci: github
template: docker-tests/github.linux.yml
params:
env:
ARCH: "amd64"
DEBIAN: "experimental"
GCC: "15"
LLVM: "20"
image: debian-cpp
test-fedora-42-cpp:
ci: github
template: docker-tests/github.linux.yml
params:
env:
FEDORA: 42
image: fedora-cpp
{% for cpp_standard in [20] %}
test-ubuntu-22.04-cpp-{{ cpp_standard }}:
ci: github
template: docker-tests/github.linux.yml
params:
env:
UBUNTU: 22.04
flags: "-e CMAKE_CXX_STANDARD={{ cpp_standard }}"
image: ubuntu-cpp
{% endfor %}
test-ubuntu-22.04-cpp-no-threading:
ci: github
template: docker-tests/github.linux.yml
params:
env:
UBUNTU: 22.04
flags: "-e ARROW_ENABLE_THREADING=OFF"
image: ubuntu-cpp
test-ubuntu-24.04-cpp-thread-sanitizer:
ci: github
template: docker-tests/github.linux.yml
params:
env:
# clang-tools and llvm version need to be synchronized so as
# to have the right llvm-symbolizer version
CLANG_TOOLS: 18
LLVM: 18
UBUNTU: 24.04
image: ubuntu-cpp-thread-sanitizer
test-ubuntu-24.04-cpp-minimal-with-formats:
ci: github
template: docker-tests/github.linux.yml
params:
env:
UBUNTU: 24.04
flags: "-e ARROW_CSV=ON -e ARROW_PARQUET=ON"
image: ubuntu-cpp-minimal
test-ubuntu-22.04-cpp-emscripten:
ci: github
template: docker-tests/github.linux.yml
params:
env:
UBUNTU: 22.04
image: ubuntu-cpp-emscripten
{% for python_version in ["3.10", "3.11", "3.12", "3.13", "3.14"] %}
test-conda-python-{{ python_version }}:
ci: github
template: docker-tests/github.linux.yml
params:
env:
PYTHON: "{{ python_version }}"
# Temporarily disable error on Warning: https://github.com/apache/arrow/issues/38239
# PYTEST_ARGS: "-W error -W 'ignore:Setting custom ClientSession:DeprecationWarning'"
image: conda-python
{% endfor %}
test-conda-python-3.12-cpython-debug:
ci: github
template: docker-tests/github.linux.yml
params:
env:
PYTHON: 3.12
image: conda-python-cpython-debug
test-conda-python-emscripten:
ci: github
template: docker-tests/github.linux.yml
params:
env:
UBUNTU: 22.04
PYTHON: 3.12
image: conda-python-emscripten
test-conda-python-3.11-hypothesis:
ci: github
template: docker-tests/github.linux.yml
params:
env:
PYTHON: 3.11
HYPOTHESIS_PROFILE: ci
PYARROW_TEST_HYPOTHESIS: ON
# limit to execute hypothesis tests only
PYTEST_ARGS: "-m hypothesis -W error"
image: conda-python-pandas
test-ubuntu-22.04-python-313-freethreading:
ci: github
template: docker-tests/github.linux.yml
params:
env:
UBUNTU: 22.04
image: ubuntu-python-313-freethreading
{% for debian_version in ["13"] %}
test-debian-{{ debian_version }}-python-3-amd64:
ci: github
template: docker-tests/github.linux.yml
params:
env:
DEBIAN: "{{ debian_version }}"
image: debian-python
test-debian-{{ debian_version }}-python-3-i386:
ci: github
template: docker-tests/github.linux.yml
params:
env:
ARCH: i386
DEBIAN: "{{ debian_version }}"
flags: "-e ARROW_S3=OFF -e ARROW_GANDIVA=OFF"
image: debian-python
{% endfor %}
test-ubuntu-22.04-python-3:
ci: github
template: docker-tests/github.linux.yml
params:
env:
UBUNTU: 22.04
image: ubuntu-python
test-ubuntu-24.04-python-3:
ci: github
template: docker-tests/github.linux.yml
params:
env:
UBUNTU: 24.04
image: ubuntu-python
test-fedora-42-python-3:
ci: github
template: docker-tests/github.linux.yml
params:
env:
FEDORA: 42
image: fedora-python
test-r-linux-valgrind:
ci: github
template: docker-tests/github.linux.yml
params:
env:
ARROW_R_DEV: "TRUE"
image: ubuntu-r-valgrind
timeout: 330 # 5.5 hours
test-r-linux-rchk:
ci: github
template: r/github.linux.rchk.yml
test-r-extra-packages:
ci: github
template: r/github.linux.extra.packages.yml
test-r-linux-as-cran:
ci: github
template: r/github.linux.cran.yml
test-r-alpine-linux-cran:
ci: github
template: docker-tests/github.linux.yml
params:
image: alpine-linux-r
test-r-fedora-clang:
ci: github
template: docker-tests/github.linux.yml
params:
image: fedora-r-clang
# R-devel built from source with Clang, simulating CRAN's
# r-devel-linux-x86_64-fedora-clang environment
timeout: 180 # 3 hours - R-devel build from source takes time
test-r-macos-as-cran:
ci: github
template: r/github.macos.cran.yml
test-r-arrow-backwards-compatibility:
ci: github
template: r/github.linux.arrow.version.back.compat.yml
test-r-versions:
ci: github
template: r/github.linux.versions.yml
params:
MATRIX: {{ "${{ matrix.r_version }}" }}
test-r-install-local:
ci: github
template: r/github.macos-linux.local.yml
test-r-install-local-minsizerel:
ci: github
template: r/github.macos-linux.local.yml
params:
env:
CMAKE_BUILD_TYPE: MinSizeRel
test-r-devdocs:
ci: github
template: r/github.devdocs.yml
test-r-depsource-system:
ci: github
template: docker-tests/github.linux.yml
params:
flags: '-e ARROW_DEPENDENCY_SOURCE=SYSTEM -e ARROW_GCS=OFF -e xsimd_SOURCE=BUNDLED'
image: ubuntu-r-only-r
test-r-dev-duckdb:
ci: github
template: docker-tests/github.linux.yml
params:
env:
R_DUCKDB_DEV: TRUE
image: ubuntu-r-only-r
test-r-offline-maximal:
ci: github
template: r/github.linux.offline.build.yml
# This one has -flto=auto
test-r-ubuntu-22.04:
ci: github
template: docker-tests/github.linux.yml
params:
env:
UBUNTU: 22.04
R_PRUNE_DEPS: TRUE
image: ubuntu-r-only-r
# This also has -flto=auto
test-r-gcc-11:
ci: github
template: docker-tests/github.linux.yml
params:
env:
UBUNTU: 22.04
GCC: 11
image: ubuntu-r-only-r
# This also has -flto=auto
test-r-gcc-12:
ci: github
template: docker-tests/github.linux.yml
params:
env:
UBUNTU: 22.04
GCC: 12
image: ubuntu-r-only-r
test-r-linux-sanitizers:
ci: github
template: r/github.linux.sanitizers.yml
params:
timeout: 240 # 4 hours
test-r-m1-san:
ci: github
template: r/github.macos.m1san.yml
# be sure to update binary-task.rb when upgrading Debian
test-debian-13-docs:
ci: github
template: docs/github.linux.yml
params:
env:
JDK: 17
pr_number: Unset
image: debian-docs
publish: false
artifacts:
- docs.tar.gz
############################## Fuzz tests #################################
test-build-cpp-fuzz:
ci: github
template: fuzz-tests/github.oss-fuzz.yml
############################## vcpkg tests ##################################
test-build-vcpkg-win:
ci: github
template: vcpkg-tests/github.windows.yml
############################## Integration tests ############################
{% for python_version, pandas_version, numpy_version, cache_leaf in [("3.10", "1.3.4", "1.21.2", True),
("3.11", "latest", "latest", False),
("3.12", "latest", "1.26", False),
("3.12", "latest", "latest", False),
("3.13", "nightly", "nightly", False),
("3.13", "upstream_devel", "nightly", False)] %}
test-conda-python-{{ python_version }}-pandas-{{ pandas_version }}-numpy-{{ numpy_version }}:
ci: github
template: docker-tests/github.linux.yml
params:
env:
PYTHON: "{{ python_version }}"
PANDAS: "{{ pandas_version }}"
NUMPY: "{{ numpy_version }}"
{% if pandas_version == "latest" %}
# ensure we have at least one build with parquet encryption disabled
PARQUET_REQUIRE_ENCRYPTION: "OFF"
{% endif %}
{% if pandas_version == "nightly" %}
# TODO can be removed once this is enabled by default in pandas >= 3
# This is to enable the Pandas feature.
# See: https://github.com/pandas-dev/pandas/pull/58459
PANDAS_FUTURE_INFER_STRING: "1"
{% endif %}
{% if not cache_leaf %}
# use the latest pandas release, so prevent reusing any cached layers
flags: --no-leaf-cache
{% endif %}
image: conda-python-pandas
{% endfor %}
{% for dask_version in ["latest", "upstream_devel"] %}
test-conda-python-3.11-dask-{{ dask_version }}:
ci: github
template: docker-tests/github.linux.yml
params:
env:
PYTHON: 3.11
DASK: "{{ dask_version }}"
# use the latest dask release, so prevent reusing any cached layers
flags: --no-leaf-cache
image: conda-python-dask
{% endfor %}
{% for hdfs_version in ["2.9.2", "3.2.1"] %}
test-conda-python-3.10-hdfs-{{ hdfs_version }}:
ci: github
template: docker-tests/github.linux.yml
params:
env:
HDFS: "{{ hdfs_version }}"
PYTHON: "3.10"
image: conda-python-hdfs
{% endfor %}
{% for python_version, spark_version, test_pyarrow_only, numpy_version, jdk_version in [("3.11", "master", "false", "latest", "17")] %}
test-conda-python-{{ python_version }}-spark-{{ spark_version }}:
ci: github
template: docker-tests/github.linux.yml
params:
env:
PYTHON: "{{ python_version }}"
SPARK: "{{ spark_version }}"
TEST_PYARROW_ONLY: "{{ test_pyarrow_only }}"
NUMPY: "{{ numpy_version }}"
JDK: "{{ jdk_version }}"
fetch_depth: 0
# use the branch-3.0 of spark, so prevent reusing any layers
flags: --no-leaf-cache
image: conda-python-spark
timeout: 90
{% endfor %}
{% for kind in ["static", "static-system-dependency"] %}
example-cpp-minimal-build-{{ kind }}:
ci: github
template: cpp-examples/github.linux.yml
params:
type: minimal_build
run: {{ kind }}
{% endfor %}
example-cpp-tutorial:
ci: github
template: cpp-examples/github.linux.yml
params:
type: tutorial_examples
run: tutorial
############################## Utility tasks ############################
preview-docs:
ci: github
template: docs/github.linux.yml
params:
env:
JDK: 17
pr_number: Unset
image: debian-docs
publish: true