| # 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. |
| |
| # Usage |
| # ----- |
| # |
| # The docker compose file is parametrized using environment variables, the |
| # defaults are set in .env file. |
| # |
| # Example: |
| # $ ARCH=arm64v8 docker-compose build ubuntu-cpp |
| # $ ARCH=arm64v8 docker-compose run ubuntu-cpp |
| # |
| # |
| # Coredumps |
| # --------- |
| # |
| # In order to enable coredumps for the C++ tests run by CTest either with |
| # command `make unittest` or `ctest --output-on-failure` the correct coredump |
| # patterns must be set. |
| # The kernel settings are coming from the host, so while it can be enabled from |
| # a running container using --priviled option the change will affect all other |
| # containers, so prefer setting it explicitly, directly on the host. |
| # WARNING: setting this will affect the host machine. |
| # |
| # Linux host: |
| # $ sudo sysctl -w kernel.core_pattern=core.%e.%p |
| # |
| # macOS host running Docker for Mac (won't persist between restarts): |
| # $ screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty |
| # # echo "core.%e.%p" > /proc/sys/kernel/core_pattern |
| # |
| # The setup attempts to generate coredumps by default, but the correct paths |
| # above must be set. In order to disable the coredump generation set |
| # ULIMIT_CORE environment variable to 0 before running docker-compose |
| # (or by setting it in .env file): |
| # |
| # ULIMIT_CORE=0 docker-compose run --rm conda-cpp |
| # |
| # See more in cpp/build-support/run-test.sh::print_coredumps |
| |
| version: '3.5' |
| |
| x-ccache: &ccache |
| CCACHE_COMPILERCHECK: content |
| CCACHE_COMPRESS: 1 |
| CCACHE_COMPRESSLEVEL: 6 |
| CCACHE_MAXSIZE: 500M |
| CCACHE_DIR: /ccache |
| |
| # CPU/memory limit presets to pass to Docker. |
| # |
| # Usage: archery docker run --resource-limit=github <image> |
| # |
| # Note that exporting ARCHERY_DOCKER_BIN="sudo docker" is likely required, |
| # unless Docker is configured with cgroups v2 (else Docker will silently |
| # ignore the limits). |
| x-limit-presets: |
| # These values emulate GitHub Actions: |
| # https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners |
| github: |
| # Note we use cpuset and not cpus since Ninja only detects and limits |
| # parallelism given the former |
| cpuset_cpus: [0, 1] |
| memory: 7g |
| |
| x-with-gpus: |
| - ubuntu-cuda-cpp |
| - ubuntu-cuda-python |
| |
| x-hierarchy: |
| # This section is used by the archery tool to enable building nested images, |
| # so it is enough to call: |
| # archery run debian-ruby |
| # instead of a seguence of docker-compose commands: |
| # docker-compose build debian-cpp |
| # docker-compose build debian-c-glib |
| # docker-compose build debian-ruby |
| # docker-compose run --rm debian-ruby |
| # |
| # Each node must be either a string scalar of a list containing the |
| # descendant images if any. Archery checks that all node has a corresponding |
| # service entry, so any new image/service must be listed here. |
| - conda: |
| - conda-cpp: |
| - conda-cpp-hiveserver2 |
| - conda-cpp-valgrind |
| - conda-python: |
| - conda-python-pandas |
| - conda-python-dask |
| - conda-python-hdfs |
| - conda-python-jpype |
| - conda-python-turbodbc |
| - conda-python-kartothek |
| - conda-python-spark |
| - conda-integration |
| - debian-cpp: |
| - debian-c-glib: |
| - debian-ruby |
| - debian-python |
| - debian-go: |
| - debian-go-cgo |
| - debian-go-cgo-python |
| - debian-java: |
| - debian-java-jni |
| - debian-js |
| - fedora-cpp: |
| - fedora-python |
| - ubuntu-cpp: |
| - ubuntu-c-glib: |
| - ubuntu-ruby |
| - ubuntu-lint |
| - ubuntu-python: |
| - ubuntu-docs |
| - ubuntu-python-sdist-test |
| - ubuntu-r |
| - ubuntu-r-only-r |
| - ubuntu-cpp-bundled |
| - ubuntu-cuda-cpp: |
| - ubuntu-cuda-python |
| - ubuntu-csharp |
| - ubuntu-cpp-sanitizer |
| - ubuntu-cpp-thread-sanitizer |
| - ubuntu-r-sanitizer |
| - ubuntu-r-valgrind |
| - python-sdist |
| - r |
| - r-revdepcheck |
| # helper services |
| - impala |
| - postgres |
| - python-wheel-manylinux-2010 |
| - python-wheel-manylinux-2014: |
| - java-jni-manylinux-2014 |
| - python-wheel-manylinux-test-imports |
| - python-wheel-manylinux-test-unittests |
| - python-wheel-windows-vs2017 |
| - python-wheel-windows-test |
| |
| volumes: |
| conda-ccache: |
| name: ${ARCH}-conda-ccache |
| debian-ccache: |
| name: ${ARCH}-debian-${DEBIAN}-ccache |
| ubuntu-ccache: |
| name: ${ARCH}-ubuntu-${UBUNTU}-ccache |
| fedora-ccache: |
| name: ${ARCH}-fedora-${FEDORA}-ccache |
| debian-rust: |
| name: ${ARCH}-debian-${DEBIAN}-rust |
| maven-cache: |
| name: maven-cache |
| python-wheel-manylinux2010-ccache: |
| name: python-wheel-manylinux2010-ccache |
| python-wheel-manylinux2014-ccache: |
| name: python-wheel-manylinux2014-ccache |
| python-wheel-windows-clcache: |
| name: python-wheel-windows-clcache |
| |
| services: |
| |
| ################################# C++ ####################################### |
| # Release build: |
| # docker-compose run -e ARROW_BUILD_TYPE=release conda-cpp|debian-cpp|... |
| # Shared only: |
| # docker-compose run -e ARROW_BUILD_STATIC=OFF conda-cpp|debian-cpp|... |
| # Static only: |
| # docker-compose run \ |
| # -e ARROW_BUILD_SHARED=OFF \ |
| # -e ARROW_TEST_LINKAGE=static \ |
| # conda-cpp|debian-cpp|... |
| |
| conda: |
| # Base image for conda builds. |
| # |
| # Usage: |
| # docker-compose build con |
| # docker-compose run --rm conda |
| # Parameters: |
| # ARCH: amd64, arm32v7 |
| image: ${REPO}:${ARCH}-conda |
| build: |
| context: . |
| dockerfile: ci/docker/conda.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-conda |
| args: |
| arch: ${ARCH} |
| prefix: /opt/conda |
| volumes: |
| - .:/arrow:delegated |
| |
| conda-cpp: |
| # C++ build in conda environment, including the doxygen docs. |
| # |
| # Usage: |
| # docker-compose build conda |
| # docker-compose build conda-cpp |
| # docker-compose run --rm conda-cpp |
| # Parameters: |
| # ARCH: amd64, arm32v7 |
| image: ${REPO}:${ARCH}-conda-cpp |
| build: |
| context: . |
| dockerfile: ci/docker/conda-cpp.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-conda-cpp |
| args: |
| repo: ${REPO} |
| arch: ${ARCH} |
| shm_size: &shm-size 2G |
| ulimits: &ulimits |
| core: ${ULIMIT_CORE} |
| environment: |
| <<: *ccache |
| ARROW_BUILD_BENCHMARKS: "ON" |
| ARROW_BUILD_EXAMPLES: "ON" |
| ARROW_ENABLE_TIMING_TESTS: # inherit |
| ARROW_MIMALLOC: "ON" |
| ARROW_USE_LD_GOLD: "ON" |
| ARROW_USE_PRECOMPILED_HEADERS: "ON" |
| volumes: &conda-volumes |
| - .:/arrow:delegated |
| - ${DOCKER_VOLUME_PREFIX}conda-ccache:/ccache:delegated |
| command: &cpp-conda-command |
| ["/arrow/ci/scripts/cpp_build.sh /arrow /build true && |
| /arrow/ci/scripts/cpp_test.sh /arrow /build"] |
| |
| conda-cpp-valgrind: |
| # Usage: |
| # docker-compose build conda |
| # docker-compose build conda-cpp |
| # docker-compose run --rm conda-cpp-valgrind |
| # Parameters: |
| # ARCH: amd64, arm32v7 |
| image: ${REPO}:${ARCH}-conda-cpp |
| build: |
| context: . |
| dockerfile: ci/docker/conda-cpp.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-conda-cpp |
| args: |
| repo: ${REPO} |
| arch: ${ARCH} |
| prefix: /opt/conda |
| shm_size: *shm-size |
| environment: |
| <<: *ccache |
| ARROW_CXXFLAGS: "-Og" # Shrink test runtime by enabling minimal optimizations |
| ARROW_ENABLE_TIMING_TESTS: # inherit |
| ARROW_FLIGHT: "OFF" |
| ARROW_GANDIVA: "OFF" |
| ARROW_JEMALLOC: "OFF" |
| ARROW_RUNTIME_SIMD_LEVEL: "AVX2" # AVX512 not supported by Valgrind (ARROW-9851) |
| ARROW_S3: "OFF" |
| ARROW_TEST_MEMCHECK: "ON" |
| ARROW_USE_LD_GOLD: "ON" |
| BUILD_WARNING_LEVEL: "PRODUCTION" |
| volumes: *conda-volumes |
| command: *cpp-conda-command |
| |
| debian-cpp: |
| # Usage: |
| # docker-compose build debian-cpp |
| # docker-compose run --rm debian-cpp |
| # Parameters: |
| # ARCH: amd64, arm64v8, ... |
| # DEBIAN: 10, 11 |
| image: ${REPO}:${ARCH}-debian-${DEBIAN}-cpp |
| build: |
| context: . |
| dockerfile: ci/docker/debian-${DEBIAN}-cpp.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-debian-${DEBIAN}-cpp |
| args: |
| arch: ${ARCH} |
| llvm: ${LLVM} |
| shm_size: *shm-size |
| ulimits: *ulimits |
| environment: |
| <<: *ccache |
| ARROW_ENABLE_TIMING_TESTS: # inherit |
| ARROW_MIMALLOC: "ON" |
| volumes: &debian-volumes |
| - .:/arrow:delegated |
| - ${DOCKER_VOLUME_PREFIX}debian-ccache:/ccache:delegated |
| command: &cpp-command > |
| /bin/bash -c " |
| /arrow/ci/scripts/cpp_build.sh /arrow /build && |
| /arrow/ci/scripts/cpp_test.sh /arrow /build" |
| |
| ubuntu-cpp: |
| # Usage: |
| # docker-compose build ubuntu-cpp |
| # docker-compose run --rm ubuntu-cpp |
| # Parameters: |
| # ARCH: amd64, arm64v8, s390x, ... |
| # UBUNTU: 18.04, 20.04 |
| image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp |
| build: |
| context: . |
| dockerfile: ci/docker/ubuntu-${UBUNTU}-cpp.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp |
| args: |
| arch: ${ARCH} |
| base: "${ARCH}/ubuntu:${UBUNTU}" |
| clang_tools: ${CLANG_TOOLS} |
| llvm: ${LLVM} |
| gcc_version: ${GCC_VERSION} |
| shm_size: *shm-size |
| ulimits: *ulimits |
| environment: |
| <<: *ccache |
| ARROW_ENABLE_TIMING_TESTS: # inherit |
| ARROW_MIMALLOC: "ON" |
| volumes: &ubuntu-volumes |
| - .:/arrow:delegated |
| - ${DOCKER_VOLUME_PREFIX}ubuntu-ccache:/ccache:delegated |
| command: *cpp-command |
| |
| ubuntu-cpp-bundled: |
| # Arrow build with BUNDLED dependencies |
| image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp-minimal |
| build: |
| context: . |
| dockerfile: ci/docker/ubuntu-${UBUNTU}-cpp-minimal.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp-minimal |
| args: |
| arch: ${ARCH} |
| base: "${ARCH}/ubuntu:${UBUNTU}" |
| shm_size: *shm-size |
| ulimits: *ulimits |
| environment: |
| <<: *ccache |
| ARROW_DEPENDENCY_SOURCE: BUNDLED |
| CMAKE_GENERATOR: "Unix Makefiles" |
| volumes: *ubuntu-volumes |
| command: *cpp-command |
| |
| ubuntu-cuda-cpp: |
| # Usage: |
| # docker-compose build cuda-cpp |
| # docker-compose run --rm cuda-cpp |
| # Also need to edit the host docker configuration as follows: |
| # https://github.com/docker/compose/issues/6691#issuecomment-561504928 |
| # Parameters: |
| # ARCH: amd64 |
| # CUDA: 9.1, 10.0, 10.1 |
| image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cuda-${CUDA}-cpp |
| build: |
| context: . |
| dockerfile: ci/docker/ubuntu-${UBUNTU}-cpp.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cuda-${CUDA}-cpp |
| args: |
| arch: ${ARCH} |
| base: nvidia/cuda:${CUDA}-devel-ubuntu${UBUNTU} |
| clang_tools: ${CLANG_TOOLS} |
| llvm: ${LLVM} |
| shm_size: *shm-size |
| ulimits: *ulimits |
| environment: |
| <<: *ccache |
| ARROW_CUDA: "ON" |
| volumes: *ubuntu-volumes |
| command: *cpp-command |
| |
| ubuntu-cpp-sanitizer: |
| # Usage: |
| # docker-compose build ubuntu-cpp-sanitizer |
| # docker-compose run --rm ubuntu-cpp-sanitizer |
| # Parameters: |
| # ARCH: amd64, arm64v8, ... |
| # UBUNTU: 18.04, 20.04 |
| image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp |
| cap_add: |
| # For LeakSanitizer |
| - SYS_PTRACE |
| build: |
| context: . |
| dockerfile: ci/docker/ubuntu-${UBUNTU}-cpp.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp |
| args: |
| arch: ${ARCH} |
| clang_tools: ${CLANG_TOOLS} |
| llvm: ${LLVM} |
| shm_size: *shm-size |
| volumes: *ubuntu-volumes |
| environment: |
| <<: *ccache |
| CC: clang-${CLANG_TOOLS} |
| CXX: clang++-${CLANG_TOOLS} |
| ARROW_BUILD_STATIC: "OFF" |
| ARROW_ENABLE_TIMING_TESTS: # inherit |
| ARROW_FUZZING: "ON" # Check fuzz regressions |
| ARROW_JEMALLOC: "OFF" |
| ARROW_ORC: "OFF" |
| ARROW_S3: "OFF" |
| ARROW_USE_ASAN: "ON" |
| ARROW_USE_UBSAN: "ON" |
| # utf8proc 2.1.0 in Ubuntu Bionic has test failures |
| utf8proc_SOURCE: "BUNDLED" |
| command: *cpp-command |
| |
| ubuntu-cpp-thread-sanitizer: |
| # Usage: |
| # docker-compose build ubuntu-cpp-thread-sanitizer |
| # docker-compose run --rm ubuntu-cpp-thread-sanitizer |
| # Parameters: |
| # ARCH: amd64, arm64v8, ... |
| # UBUNTU: 18.04, 20.04 |
| image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp |
| build: |
| context: . |
| dockerfile: ci/docker/ubuntu-${UBUNTU}-cpp.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp |
| args: |
| arch: ${ARCH} |
| clang_tools: ${CLANG_TOOLS} |
| llvm: ${LLVM} |
| shm_size: *shm-size |
| volumes: *ubuntu-volumes |
| environment: |
| <<: *ccache |
| CC: clang-${CLANG_TOOLS} |
| CXX: clang++-${CLANG_TOOLS} |
| ARROW_BUILD_STATIC: "OFF" |
| ARROW_ENABLE_TIMING_TESTS: # inherit |
| ARROW_DATASET: "ON" |
| ARROW_JEMALLOC: "OFF" |
| ARROW_ORC: "OFF" |
| ARROW_S3: "OFF" |
| ARROW_USE_TSAN: "ON" |
| command: *cpp-command |
| |
| fedora-cpp: |
| # Usage: |
| # docker-compose build fedora-cpp |
| # docker-compose run --rm fedora-cpp |
| # Parameters: |
| # ARCH: amd64, arm64v8, ... |
| # FEDORA: 33 |
| image: ${REPO}:${ARCH}-fedora-${FEDORA}-cpp |
| build: |
| context: . |
| dockerfile: ci/docker/fedora-${FEDORA}-cpp.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-fedora-${FEDORA}-cpp |
| args: |
| arch: ${ARCH} |
| llvm: ${LLVM} |
| shm_size: *shm-size |
| ulimits: *ulimits |
| environment: |
| <<: *ccache |
| ARROW_ENABLE_TIMING_TESTS: # inherit |
| ARROW_MIMALLOC: "ON" |
| Protobuf_SOURCE: "BUNDLED" # Need Protobuf >= 3.15 |
| volumes: &fedora-volumes |
| - .:/arrow:delegated |
| - ${DOCKER_VOLUME_PREFIX}fedora-ccache:/ccache:delegated |
| command: *cpp-command |
| |
| ############################### C GLib ###################################### |
| |
| debian-c-glib: |
| # Usage: |
| # docker-compose build debian-cpp |
| # docker-compose build debian-c-glib |
| # docker-compose run --rm debian-c-glib |
| # Parameters: |
| # ARCH: amd64, arm64v8, ... |
| # DEBIAN: 10, 11 |
| image: ${REPO}:${ARCH}-debian-${DEBIAN}-c-glib |
| build: |
| context: . |
| dockerfile: ci/docker/linux-apt-c-glib.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-debian-${DEBIAN}-c-glib |
| args: |
| base: ${REPO}:${ARCH}-debian-${DEBIAN}-cpp |
| shm_size: *shm-size |
| ulimits: *ulimits |
| environment: |
| <<: *ccache |
| ARROW_GLIB_GTK_DOC: "true" |
| volumes: *debian-volumes |
| command: &c-glib-command > |
| /bin/bash -c " |
| /arrow/ci/scripts/cpp_build.sh /arrow /build && |
| /arrow/ci/scripts/c_glib_build.sh /arrow /build && |
| /arrow/ci/scripts/c_glib_test.sh /arrow /build" |
| |
| ubuntu-c-glib: |
| # Usage: |
| # docker-compose build ubuntu-cpp |
| # docker-compose build ubuntu-c-glib |
| # docker-compose run --rm ubuntu-c-glib |
| # Parameters: |
| # ARCH: amd64, arm64v8, ... |
| # UBUNTU: 18.04, 20.04 |
| image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-c-glib |
| build: |
| context: . |
| dockerfile: ci/docker/linux-apt-c-glib.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-c-glib |
| args: |
| base: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp |
| shm_size: *shm-size |
| ulimits: *ulimits |
| environment: |
| <<: *ccache |
| ARROW_GLIB_GTK_DOC: "true" |
| volumes: *ubuntu-volumes |
| command: *c-glib-command |
| |
| ############################### Ruby ######################################## |
| # Until Ruby is the only dependent implementation on top of C Glib we can |
| # test C Glib and Ruby in one pass. This is an optimization to avoid |
| # redundant (one for C GLib and one for Ruby doing the same work twice) |
| # builds on CI services. |
| |
| debian-ruby: |
| # Usage: |
| # docker-compose build debian-cpp |
| # docker-compose build debian-c-glib |
| # docker-compose build debian-ruby |
| # docker-compose run --rm debian-ruby |
| # Parameters: |
| # ARCH: amd64, arm64v8, ... |
| # DEBIAN: 10, 11 |
| image: ${REPO}:${ARCH}-debian-${DEBIAN}-ruby |
| build: |
| context: . |
| dockerfile: ci/docker/linux-apt-ruby.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-debian-${DEBIAN}-ruby |
| args: |
| base: ${REPO}:${ARCH}-debian-${DEBIAN}-c-glib |
| shm_size: *shm-size |
| ulimits: *ulimits |
| environment: |
| <<: *ccache |
| volumes: *debian-volumes |
| command: &ruby-command > |
| /bin/bash -c " |
| /arrow/ci/scripts/cpp_build.sh /arrow /build && |
| /arrow/ci/scripts/c_glib_build.sh /arrow /build && |
| /arrow/ci/scripts/c_glib_test.sh /arrow /build && |
| /arrow/ci/scripts/ruby_test.sh /arrow /build" |
| |
| ubuntu-ruby: |
| # Usage: |
| # docker-compose build ubuntu-cpp |
| # docker-compose build ubuntu-c-glib |
| # docker-compose build ubuntu-ruby |
| # docker-compose run --rm ubuntu-ruby |
| # Parameters: |
| # ARCH: amd64, arm64v8, ... |
| # UBUNTU: 18.04, 20.04 |
| image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-ruby |
| build: |
| context: . |
| dockerfile: ci/docker/linux-apt-ruby.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-ruby |
| args: |
| base: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-c-glib |
| shm_size: *shm-size |
| ulimits: *ulimits |
| environment: |
| <<: *ccache |
| volumes: *ubuntu-volumes |
| command: *ruby-command |
| |
| ############################### Python ###################################### |
| |
| conda-python: |
| # Usage: |
| # docker-compose build conda |
| # docker-compose build conda-cpp |
| # docker-compose build conda-python |
| # docker-compose run --rm conda-python |
| # Parameters: |
| # ARCH: amd64, arm32v7 |
| # PYTHON: 3.6, 3.7, 3.8, 3.9 |
| image: ${REPO}:${ARCH}-conda-python-${PYTHON} |
| build: |
| context: . |
| dockerfile: ci/docker/conda-python.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-conda-python-${PYTHON} |
| args: |
| repo: ${REPO} |
| arch: ${ARCH} |
| python: ${PYTHON} |
| shm_size: *shm-size |
| environment: |
| <<: *ccache |
| volumes: *conda-volumes |
| command: &python-conda-command |
| ["/arrow/ci/scripts/cpp_build.sh /arrow /build && |
| /arrow/ci/scripts/python_build.sh /arrow /build && |
| /arrow/ci/scripts/python_test.sh /arrow"] |
| |
| ubuntu-cuda-python: |
| # Usage: |
| # docker-compose build cuda-cpp |
| # docker-compose build cuda-python |
| # docker-compose run --rm cuda-python |
| # Parameters: |
| # ARCH: amd64 |
| # CUDA: 8.0, 10.0, ... |
| image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cuda-${CUDA}-python-3 |
| build: |
| context: . |
| dockerfile: ci/docker/linux-apt-python-3.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cuda-${CUDA}-python-3 |
| args: |
| base: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cuda-${CUDA}-cpp |
| shm_size: *shm-size |
| environment: |
| <<: *ccache |
| ARROW_CUDA: "ON" |
| volumes: *ubuntu-volumes |
| command: &python-command > |
| /bin/bash -c " |
| /arrow/ci/scripts/cpp_build.sh /arrow /build && |
| /arrow/ci/scripts/python_build.sh /arrow /build && |
| /arrow/ci/scripts/python_test.sh /arrow" |
| |
| debian-python: |
| # Usage: |
| # docker-compose build debian-cpp |
| # docker-compose build debian-python |
| # docker-compose run --rm debian-python |
| # Parameters: |
| # ARCH: amd64, arm64v8, ... |
| # DEBIAN: 10, 11 |
| image: ${REPO}:${ARCH}-debian-${DEBIAN}-python-3 |
| build: |
| context: . |
| dockerfile: ci/docker/linux-apt-python-3.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-debian-${DEBIAN}-python-3 |
| args: |
| base: ${REPO}:${ARCH}-debian-${DEBIAN}-cpp |
| shm_size: *shm-size |
| environment: |
| <<: *ccache |
| volumes: *debian-volumes |
| command: *python-command |
| |
| ubuntu-python: |
| # Usage: |
| # docker-compose build ubuntu-cpp |
| # docker-compose build ubuntu-python |
| # docker-compose run --rm ubuntu-python |
| # Parameters: |
| # ARCH: amd64, arm64v8, ... |
| # UBUNTU: 18.04, 20.04 |
| image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-python-3 |
| build: |
| context: . |
| dockerfile: ci/docker/linux-apt-python-3.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-python-3 |
| args: |
| base: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp |
| shm_size: *shm-size |
| environment: |
| <<: *ccache |
| volumes: *ubuntu-volumes |
| command: *python-command |
| |
| fedora-python: |
| # Usage: |
| # docker-compose build fedora-cpp |
| # docker-compose build fedora-python |
| # docker-compose run --rm fedora-python |
| # Parameters: |
| # ARCH: amd64, arm64v8, ... |
| # FEDORA: 33 |
| image: ${REPO}:${ARCH}-fedora-${FEDORA}-python-3 |
| build: |
| context: . |
| dockerfile: ci/docker/linux-dnf-python-3.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-fedora-${FEDORA}-python-3 |
| args: |
| base: ${REPO}:${ARCH}-fedora-${FEDORA}-cpp |
| shm_size: *shm-size |
| environment: |
| <<: *ccache |
| Protobuf_SOURCE: "BUNDLED" # Need Protobuf >= 3.15 |
| volumes: *fedora-volumes |
| command: *python-command |
| |
| ############################ Python sdist ################################### |
| |
| python-sdist: |
| # Usage: |
| # docker-compose build python-sdist |
| # docker-compose run --rm python-sdist |
| # Parameters: |
| # PYARROW_VERSION: The pyarrow version for sdist such as "3.0.0" |
| image: ${REPO}:python-sdist |
| build: |
| context: . |
| dockerfile: ci/docker/python-sdist.dockerfile |
| cache_from: |
| - ${REPO}:python-sdist |
| environment: |
| PYARROW_VERSION: ${PYARROW_VERSION:-} |
| volumes: |
| - .:/arrow:delegated |
| command: /arrow/ci/scripts/python_sdist_build.sh /arrow |
| |
| ubuntu-python-sdist-test: |
| # Usage: |
| # docker-compose build ubuntu-cpp |
| # docker-compose build ubuntu-python-sdist-test |
| # docker-compose run --rm ubuntu-python-sdist-test |
| # Parameters: |
| # ARCH: amd64, arm64v8, ... |
| # PYARROW_VERSION: The test target pyarrow version such as "3.0.0" |
| # UBUNTU: 18.04, 20.04 |
| image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-python-3 |
| build: |
| context: . |
| dockerfile: ci/docker/linux-apt-python-3.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-python-3 |
| args: |
| base: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp |
| shm_size: *shm-size |
| environment: |
| <<: *ccache |
| PYARROW_VERSION: ${PYARROW_VERSION:-} |
| volumes: *ubuntu-volumes |
| command: > |
| /bin/bash -c " |
| apt remove -y git && |
| /arrow/ci/scripts/cpp_build.sh /arrow /build && |
| /arrow/ci/scripts/python_sdist_test.sh /arrow" |
| |
| ############################ Python wheels ################################## |
| |
| # See available versions at: |
| # https://quay.io/repository/pypa/manylinux2010_x86_64?tab=tags |
| # only amd64 arch is supported |
| python-wheel-manylinux-2010: |
| image: ${REPO}:${ARCH}-python-${PYTHON}-wheel-manylinux-2010-vcpkg-${VCPKG} |
| build: |
| args: |
| arch_alias: ${ARCH_ALIAS} |
| arch_short_alias: ${ARCH_SHORT_ALIAS} |
| base: quay.io/pypa/manylinux2010_${ARCH_ALIAS}:2021-10-11-14ac00e |
| vcpkg: ${VCPKG} |
| python: ${PYTHON} |
| context: . |
| dockerfile: ci/docker/python-wheel-manylinux-201x.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-python-${PYTHON}-wheel-manylinux-2010-vcpkg-${VCPKG} |
| environment: |
| <<: *ccache |
| MANYLINUX_VERSION: 2010 |
| volumes: |
| - .:/arrow:delegated |
| - ${DOCKER_VOLUME_PREFIX}python-wheel-manylinux2010-ccache:/ccache:delegated |
| command: /arrow/ci/scripts/python_wheel_manylinux_build.sh |
| |
| # See available versions at: |
| # https://quay.io/repository/pypa/manylinux2014_x86_64?tab=tags |
| python-wheel-manylinux-2014: |
| image: ${REPO}:${ARCH}-python-${PYTHON}-wheel-manylinux-2014-vcpkg-${VCPKG} |
| build: |
| args: |
| arch_alias: ${ARCH_ALIAS} |
| arch_short_alias: ${ARCH_SHORT_ALIAS} |
| base: quay.io/pypa/manylinux2014_${ARCH_ALIAS}:2021-10-11-14ac00e |
| vcpkg: ${VCPKG} |
| python: ${PYTHON} |
| context: . |
| dockerfile: ci/docker/python-wheel-manylinux-201x.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-python-${PYTHON}-wheel-manylinux-2014-vcpkg-${VCPKG} |
| environment: |
| <<: *ccache |
| MANYLINUX_VERSION: 2014 |
| volumes: |
| - .:/arrow:delegated |
| - ${DOCKER_VOLUME_PREFIX}python-wheel-manylinux2014-ccache:/ccache:delegated |
| command: /arrow/ci/scripts/python_wheel_manylinux_build.sh |
| |
| python-wheel-manylinux-test-imports: |
| image: ${ARCH}/python:${PYTHON} |
| shm_size: 2G |
| volumes: |
| - .:/arrow:delegated |
| environment: |
| CHECK_IMPORTS: "ON" |
| CHECK_UNITTESTS: "OFF" |
| command: /arrow/ci/scripts/python_wheel_unix_test.sh /arrow |
| |
| python-wheel-manylinux-test-unittests: |
| image: ${REPO}:${ARCH}-python-${PYTHON}-wheel-manylinux-test |
| build: |
| args: |
| arch: ${ARCH} |
| python: ${PYTHON} |
| context: . |
| dockerfile: ci/docker/python-wheel-manylinux-test.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-python-${PYTHON}-wheel-manylinux-test |
| shm_size: 2G |
| volumes: |
| - .:/arrow:delegated |
| environment: |
| CHECK_IMPORTS: "OFF" |
| CHECK_UNITTESTS: "ON" |
| command: /arrow/ci/scripts/python_wheel_unix_test.sh /arrow |
| |
| python-wheel-windows-vs2017: |
| # The windows images must be built locally and pushed to a remote registry: |
| # export REPO=ghcr.io/ursacomputing/arrow |
| # PYTHON=3.6 archery docker build --no-pull --using-docker-cli python-wheel-windows-vs2017 |
| # PYTHON=3.7 archery docker build --no-pull --using-docker-cli python-wheel-windows-vs2017 |
| # PYTHON=3.8 archery docker build --no-pull --using-docker-cli python-wheel-windows-vs2017 |
| # PYTHON=3.9 archery docker build --no-pull --using-docker-cli python-wheel-windows-vs2017 |
| # PYTHON=3.6 archery docker push python-wheel-windows-vs2017 |
| # PYTHON=3.7 archery docker push python-wheel-windows-vs2017 |
| # PYTHON=3.8 archery docker push python-wheel-windows-vs2017 |
| # PYTHON=3.9 archery docker push python-wheel-windows-vs2017 |
| image: ${REPO}:python-${PYTHON}-wheel-windows-vs2017-vcpkg-${VCPKG} |
| build: |
| args: |
| vcpkg: ${VCPKG} |
| python: ${PYTHON} |
| context: . |
| dockerfile: ci/docker/python-wheel-windows-vs2017.dockerfile |
| # This should make the pushed images reusable, but the image gets rebuilt. |
| # Uncomment if no local cache is available. |
| # cache_from: |
| # - mcr.microsoft.com/windows/servercore:ltsc2019 |
| # - ${REPO}:wheel-windows-vs2017 |
| volumes: |
| - "${DOCKER_VOLUME_PREFIX}python-wheel-windows-clcache:C:/clcache" |
| - type: bind |
| source: . |
| target: "C:/arrow" |
| command: arrow\\ci\\scripts\\python_wheel_windows_build.bat |
| |
| python-wheel-windows-test: |
| image: python:${PYTHON}-windowsservercore-1809 |
| volumes: |
| - type: bind |
| source: . |
| target: "C:/arrow" |
| command: arrow\\ci\\scripts\\python_wheel_windows_test.bat |
| |
| java-jni-manylinux-2014: |
| image: ${REPO}:${ARCH}-java-jni-manylinux-2014-vcpkg-${VCPKG} |
| build: |
| args: |
| base: ${REPO}:${ARCH}-python-${PYTHON}-wheel-manylinux-2014-vcpkg-${VCPKG} |
| java: 1.8.0 |
| context: . |
| dockerfile: ci/docker/java-jni-manylinux-201x.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-java-jni-manylinux-2014-vcpkg-${VCPKG} |
| environment: |
| <<: *ccache |
| volumes: |
| - .:/arrow:delegated |
| - ${DOCKER_VOLUME_PREFIX}python-wheel-manylinux2014-ccache:/ccache:delegated |
| command: |
| ["pip install -e /arrow/dev/archery && |
| /arrow/ci/scripts/java_cdata_build.sh /arrow /java-native-build /arrow/java/dist && |
| /arrow/ci/scripts/java_jni_manylinux_build.sh /arrow /build /arrow/java/dist"] |
| |
| ############################## Integration ################################# |
| |
| conda-python-pandas: |
| # Possible $PANDAS parameters: |
| # - `latest`: latest release |
| # - `master`: git master branch, use `docker-compose run --no-cache` |
| # - `<version>`: specific version available on conda-forge |
| # Usage: |
| # docker-compose build conda |
| # docker-compose build conda-cpp |
| # docker-compose build conda-python |
| # docker-compose build conda-python-pandas |
| # docker-compose run --rm conda-python-pandas |
| image: ${REPO}:${ARCH}-conda-python-${PYTHON}-pandas-${PANDAS} |
| build: |
| context: . |
| dockerfile: ci/docker/conda-python-pandas.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-conda-python-${PYTHON}-pandas-${PANDAS} |
| args: |
| repo: ${REPO} |
| arch: ${ARCH} |
| python: ${PYTHON} |
| numpy: ${NUMPY} |
| pandas: ${PANDAS} |
| shm_size: *shm-size |
| environment: |
| <<: *ccache |
| volumes: *conda-volumes |
| command: *python-conda-command |
| |
| conda-python-dask: |
| # Possible $DASK parameters: |
| # - `latest`: latest release |
| # - `master`: git master branch, use `docker-compose run --no-cache` |
| # - `<version>`: specific version available on conda-forge |
| # Usage: |
| # docker-compose build conda |
| # docker-compose build conda-cpp |
| # docker-compose build conda-python |
| # docker-compose build conda-python-dask |
| # docker-compose run --rm conda-python-dask |
| image: ${REPO}:${ARCH}-conda-python-${PYTHON}-dask-${DASK} |
| build: |
| context: . |
| dockerfile: ci/docker/conda-python-dask.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-conda-python-${PYTHON}-dask-${DASK} |
| args: |
| repo: ${REPO} |
| arch: ${ARCH} |
| python: ${PYTHON} |
| dask: ${DASK} |
| shm_size: *shm-size |
| environment: |
| <<: *ccache |
| volumes: *conda-volumes |
| command: |
| ["/arrow/ci/scripts/cpp_build.sh /arrow /build && |
| /arrow/ci/scripts/python_build.sh /arrow /build && |
| /arrow/ci/scripts/integration_dask.sh"] |
| |
| conda-python-jpype: |
| # Usage: |
| # docker-compose build conda |
| # docker-compose build conda-cpp |
| # docker-compose build conda-python |
| # docker-compose build conda-python-jpype |
| # docker-compose run --rm conda-python-jpype |
| image: ${REPO}:${ARCH}-conda-python-${PYTHON}-jpype |
| build: |
| context: . |
| dockerfile: ci/docker/conda-python-jpype.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-conda-python-${PYTHON}-jpype |
| args: |
| repo: ${REPO} |
| arch: ${ARCH} |
| python: ${PYTHON} |
| shm_size: *shm-size |
| environment: |
| <<: *ccache |
| ARROW_FLIGHT: "OFF" |
| ARROW_GANDIVA: "OFF" |
| volumes: *conda-volumes |
| command: |
| ["/arrow/ci/scripts/cpp_build.sh /arrow /build && |
| /arrow/ci/scripts/python_build.sh /arrow /build && |
| /arrow/ci/scripts/java_build.sh /arrow /build && |
| /arrow/ci/scripts/python_test.sh /arrow"] |
| |
| conda-python-turbodbc: |
| # Possible $TURBODBC parameters: |
| # - `latest`: latest release |
| # - `master`: git master branch, use `docker-compose run --no-cache` |
| # - `<version>`: specific version available under github releases |
| # Usage: |
| # docker-compose build conda |
| # docker-compose build conda-cpp |
| # docker-compose build conda-python |
| # docker-compose build conda-python-turbodbc |
| # docker-compose run --rm conda-python-turbodbc |
| image: ${REPO}:${ARCH}-conda-python-${PYTHON}-turbodbc-${TURBODBC} |
| build: |
| context: . |
| dockerfile: ci/docker/conda-python-turbodbc.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-conda-python-${PYTHON}-turbodbc-${TURBODBC} |
| args: |
| repo: ${REPO} |
| arch: ${ARCH} |
| python: ${PYTHON} |
| turbodbc: ${TURBODBC} |
| shm_size: *shm-size |
| environment: |
| <<: *ccache |
| volumes: *conda-volumes |
| command: |
| ["/arrow/ci/scripts/cpp_build.sh /arrow /build && |
| /arrow/ci/scripts/python_build.sh /arrow /build && |
| /arrow/ci/scripts/integration_turbodbc.sh /turbodbc /build"] |
| |
| conda-python-kartothek: |
| # Possible $KARTOTHEK parameters: |
| # - `latest`: latest release |
| # - `master`: git master branch, use `docker-compose run --no-cache` |
| # - `<version>`: specific version available under github releases |
| # Usage: |
| # docker-compose build conda |
| # docker-compose build conda-cpp |
| # docker-compose build conda-python |
| # docker-compose build conda-python-kartothek |
| # docker-compose run --rm conda-python-kartothek |
| image: ${REPO}:${ARCH}-conda-python-${PYTHON}-kartothek-${KARTOTHEK} |
| build: |
| context: . |
| dockerfile: ci/docker/conda-python-kartothek.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-conda-python-${PYTHON}-kartothek-${KARTOTHEK} |
| args: |
| repo: ${REPO} |
| arch: ${ARCH} |
| python: ${PYTHON} |
| kartothek: ${KARTOTHEK} |
| shm_size: *shm-size |
| environment: |
| <<: *ccache |
| volumes: *conda-volumes |
| command: |
| ["/arrow/ci/scripts/cpp_build.sh /arrow /build && |
| /arrow/ci/scripts/python_build.sh /arrow /build && |
| /arrow/ci/scripts/integration_kartothek.sh /kartothek /build"] |
| |
| ################################## R ######################################## |
| |
| ubuntu-r: |
| # Usage: |
| # docker-compose build ubuntu-cpp |
| # docker-compose build ubuntu-r |
| # docker-compose run ubuntu-r |
| image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-r-${R} |
| build: |
| context: . |
| dockerfile: ci/docker/linux-apt-r.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-r-${R} |
| args: |
| arch: ${ARCH} |
| r: ${R} |
| base: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp |
| gcc_version: ${GCC_VERSION} |
| tz: ${TZ} |
| shm_size: *shm-size |
| environment: |
| <<: *ccache |
| ARROW_R_CXXFLAGS: '-Werror' |
| LIBARROW_BUILD: 'false' |
| NOT_CRAN: 'true' |
| ARROW_R_DEV: ${ARROW_R_DEV} |
| volumes: *ubuntu-volumes |
| command: > |
| /bin/bash -c " |
| /arrow/ci/scripts/cpp_build.sh /arrow /build && |
| /arrow/ci/scripts/python_build.sh /arrow /build && |
| /arrow/ci/scripts/r_test.sh /arrow" |
| |
| ubuntu-r-only-r: |
| environment: |
| ARROW_DEPENDENCY_SOURCE: '' |
| extends: ubuntu-r |
| command: > |
| /bin/bash -c " |
| /arrow/ci/scripts/r_test.sh /arrow" |
| |
| r: |
| # This lets you test building/installing the arrow R package |
| # (including building the C++ library) on any Docker image that contains R |
| # |
| # Usage: |
| # R_ORG=rhub R_IMAGE=ubuntu-gcc-release R_TAG=latest docker-compose build r |
| # R_ORG=rhub R_IMAGE=ubuntu-gcc-release R_TAG=latest docker-compose run r |
| image: ${REPO}:r-${R_ORG}-${R_IMAGE}-${R_TAG} |
| build: |
| context: . |
| dockerfile: ci/docker/linux-r.dockerfile |
| cache_from: |
| - ${REPO}:r-${R_ORG}-${R_IMAGE}-${R_TAG} |
| args: |
| base: ${R_ORG}/${R_IMAGE}:${R_TAG} |
| r_dev: ${ARROW_R_DEV} |
| devtoolset_version: ${DEVTOOLSET_VERSION} |
| tz: ${TZ} |
| shm_size: *shm-size |
| environment: |
| LIBARROW_DOWNLOAD: "false" |
| ARROW_SOURCE_HOME: "/arrow" |
| ARROW_R_DEV: ${ARROW_R_DEV} |
| # To test for CRAN release, delete ^^ these two env vars so we download the Apache release |
| ARROW_USE_PKG_CONFIG: "false" |
| devtoolset_version: ${DEVTOOLSET_VERSION} |
| volumes: |
| - .:/arrow:delegated |
| command: > |
| /bin/bash -c "/arrow/ci/scripts/r_test.sh /arrow" |
| |
| ubuntu-r-sanitizer: |
| # Only 18.04 and amd64 supported |
| # Usage: |
| # docker-compose build ubuntu-r-sanitizer |
| # docker-compose run ubuntu-r-sanitizer |
| image: ${REPO}:amd64-ubuntu-18.04-r-sanitizer |
| cap_add: |
| # LeakSanitizer and gdb requires ptrace(2) |
| - SYS_PTRACE |
| build: |
| context: . |
| dockerfile: ci/docker/linux-r.dockerfile |
| cache_from: |
| - ${REPO}:amd64-ubuntu-18.04-r-sanitizer |
| args: |
| base: wch1/r-debug:latest |
| r_bin: RDsan |
| tz: ${TZ} |
| environment: |
| <<: *ccache |
| volumes: *ubuntu-volumes |
| command: > |
| /bin/bash -c " |
| /arrow/ci/scripts/r_sanitize.sh /arrow" |
| |
| ubuntu-r-valgrind: |
| # Only 18.04 and amd64 supported |
| # Usage: |
| # docker-compose build ubuntu-r-valgrind |
| # docker-compose run ubuntu-r-valgrind |
| image: ${REPO}:amd64-ubuntu-18.04-r-valgrind |
| build: |
| context: . |
| dockerfile: ci/docker/linux-r.dockerfile |
| cache_from: |
| - ${REPO}:amd64-ubuntu-18.04-r-valgrind |
| args: |
| base: wch1/r-debug:latest |
| r_bin: RDvalgrind |
| tz: ${TZ} |
| environment: |
| <<: *ccache |
| ARROW_R_DEV: ${ARROW_R_DEV} |
| # AVX512 not supported by Valgrind (similar to ARROW-9851) some runners support AVX512 and some do not |
| # so some build might pass without this setting, but we want to ensure that we stay to AVX2 regardless of runner. |
| EXTRA_CMAKE_FLAGS: "-DARROW_RUNTIME_SIMD_LEVEL=AVX2" |
| volumes: *ubuntu-volumes |
| command: > |
| /bin/bash -c " |
| /arrow/ci/scripts/r_valgrind.sh /arrow" |
| |
| r-revdepcheck: |
| # Usage: |
| # docker-compose build r-revdepcheck |
| # docker-compose run r-revdepcheck |
| image: ${REPO}:r-rstudio-r-base-4.0-focal-revdepcheck |
| build: |
| context: . |
| dockerfile: ci/docker/linux-r.dockerfile |
| cache_from: |
| - ${REPO}:r-rstudio-r-base-4.0-focal-revdepcheck |
| args: |
| base: rstudio/r-base:4.0-focal |
| r_dev: ${ARROW_R_DEV} |
| tz: ${TZ} |
| shm_size: *shm-size |
| environment: |
| LIBARROW_DOWNLOAD: "true" |
| LIBARROW_MINIMAL: "false" |
| ARROW_SOURCE_HOME: "/arrow" |
| ARROW_R_DEV: "true" |
| volumes: *ubuntu-volumes |
| command: > |
| /bin/bash -c "/arrow/ci/scripts/r_revdepcheck.sh /arrow" |
| |
| |
| |
| ################################# Go ######################################## |
| |
| debian-go: |
| # Usage: |
| # docker-compose build debian-go |
| # docker-compose run debian-go |
| image: ${REPO}:${ARCH}-debian-${DEBIAN}-go-${GO} |
| build: |
| context: . |
| dockerfile: ci/docker/debian-${DEBIAN}-go.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-debian-${DEBIAN}-go-${GO} |
| args: |
| arch: ${ARCH} |
| go: ${GO} |
| shm_size: *shm-size |
| volumes: *debian-volumes |
| command: &go-command > |
| /bin/bash -c " |
| /arrow/ci/scripts/go_build.sh /arrow && |
| /arrow/ci/scripts/go_test.sh /arrow" |
| |
| debian-go-cgo: |
| # Usage: |
| # docker-compose build debian-go-cgo |
| # docker-compose run debian-go-cgo |
| image: ${REPO}:${ARCH}-debian-${DEBIAN}-go-${GO}-cgo |
| build: |
| context: . |
| dockerfile: ci/docker/debian-go-cgo.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-debian-${DEBIAN}-go-${GO}-cgo |
| args: |
| base: ${REPO}:${ARCH}-debian-${DEBIAN}-go-${GO} |
| shm_size: *shm-size |
| volumes: *debian-volumes |
| environment: |
| ARROW_GO_TESTCGO: "1" |
| command: *go-command |
| |
| debian-go-cgo-python: |
| # Usage: |
| # docker-compose build debian-go-cgo-python |
| # docker-compose run debian-go-cgo-python |
| image: ${REPO}:${ARCH}-debian-${DEBIAN}-go-${GO}-cgo-python |
| build: |
| context: . |
| dockerfile: ci/docker/debian-${DEBIAN}-go-cgo-python.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-debian-${DEBIAN}-go-${GO}-cgo-python |
| args: |
| base: ${REPO}:${ARCH}-debian-${DEBIAN}-go-${GO} |
| shm_size: *shm-size |
| volumes: *debian-volumes |
| command: &go-cgo-python-command > |
| /bin/bash -c " |
| /arrow/ci/scripts/go_cgo_python_test.sh /arrow" |
| |
| ############################# JavaScript #################################### |
| |
| debian-js: |
| # Usage: |
| # docker-compose build debian-js |
| # docker-compose run debian-js |
| image: ${REPO}:${ARCH}-debian-${DEBIAN}-js-${NODE} |
| build: |
| context: . |
| dockerfile: ci/docker/debian-${DEBIAN}-js.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-debian-${DEBIAN}-js-${NODE} |
| args: |
| arch: ${ARCH} |
| node: ${NODE} |
| shm_size: *shm-size |
| volumes: *debian-volumes |
| command: &js-command > |
| /bin/bash -c " |
| /arrow/ci/scripts/js_build.sh /arrow && |
| /arrow/ci/scripts/js_test.sh /arrow" |
| |
| #################################### C# ##################################### |
| |
| ubuntu-csharp: |
| # Usage: |
| # docker-compose build ubuntu-csharp |
| # docker-compose run ubuntu-csharp |
| image: ${REPO}:${ARCH}-ubuntu-18.04-csharp-${DOTNET} |
| build: |
| context: . |
| dockerfile: ci/docker/ubuntu-18.04-csharp.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-ubuntu-18.04-csharp-${DOTNET} |
| args: |
| dotnet: ${DOTNET} |
| platform: bionic # use bionic-arm64v8 for ARM |
| shm_size: *shm-size |
| volumes: *ubuntu-volumes |
| command: &csharp-command > |
| /bin/bash -c " |
| /arrow/ci/scripts/csharp_build.sh /arrow && |
| /arrow/ci/scripts/csharp_test.sh /arrow && |
| /arrow/ci/scripts/csharp_pack.sh /arrow" |
| |
| ################################ Java ####################################### |
| |
| debian-java: |
| # Usage: |
| # docker-compose build debian-java |
| # docker-compose run debian-java |
| image: ${REPO}:${ARCH}-debian-9-java-${JDK}-maven-${MAVEN} |
| build: |
| context: . |
| dockerfile: ci/docker/debian-9-java.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-debian-9-java-${JDK}-maven-${MAVEN} |
| args: |
| arch: ${ARCH} |
| jdk: ${JDK} |
| maven: ${MAVEN} |
| shm_size: *shm-size |
| volumes: &java-volumes |
| - .:/arrow:delegated |
| - ${DOCKER_VOLUME_PREFIX}maven-cache:/root/.m2:delegated |
| command: &java-command > |
| /bin/bash -c " |
| /arrow/ci/scripts/java_build.sh /arrow /build && |
| /arrow/ci/scripts/java_test.sh /arrow /build" |
| |
| debian-java-jni: |
| # Includes plasma test, jni for gandiva and orc, and C data interface. |
| # Usage: |
| # docker-compose build debian-java |
| # docker-compose build debian-java-jni |
| # docker-compose run debian-java-jni |
| image: ${REPO}:${ARCH}-debian-9-java-${JDK}-maven-${MAVEN}-jni |
| build: |
| context: . |
| dockerfile: ci/docker/linux-apt-jni.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-debian-9-java-${JDK}-maven-${MAVEN}-jni |
| args: |
| base: ${REPO}:${ARCH}-debian-9-java-${JDK}-maven-${MAVEN} |
| llvm: ${LLVM} |
| shm_size: *shm-size |
| environment: |
| <<: *ccache |
| volumes: |
| - .:/arrow:delegated |
| - ${DOCKER_VOLUME_PREFIX}maven-cache:/root/.m2:delegated |
| - ${DOCKER_VOLUME_PREFIX}debian-ccache:/ccache:delegated |
| command: |
| /bin/bash -c " |
| /arrow/ci/scripts/cpp_build.sh /arrow /build && |
| /arrow/ci/scripts/java_cdata_build.sh /arrow /build/java/c/build /build/java/c && |
| /arrow/ci/scripts/java_build.sh /arrow /build && |
| /arrow/ci/scripts/java_test.sh /arrow /build" |
| |
| ############################## Integration ################################## |
| |
| conda-integration: |
| # Usage: |
| # docker-compose build conda-cpp |
| # docker-compose build conda-integration |
| # docker-compose run conda-integration |
| image: ${REPO}:${ARCH}-conda-integration |
| build: |
| context: . |
| dockerfile: ci/docker/conda-integration.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-conda-integration |
| args: |
| repo: ${REPO} |
| arch: ${ARCH} |
| jdk: ${JDK} |
| # conda-forge doesn't have 3.5.4 so pinning explicitly, but this should |
| # be set to ${MAVEN} |
| maven: 3.5 |
| node: ${NODE} |
| go: ${GO} |
| volumes: *conda-volumes |
| environment: |
| <<: *ccache |
| # tell archery where the arrow binaries are located |
| ARROW_CPP_EXE_PATH: /build/cpp/debug |
| ARCHERY_INTEGRATION_WITH_RUST: 0 |
| command: |
| ["/arrow/ci/scripts/rust_build.sh /arrow /build && |
| /arrow/ci/scripts/cpp_build.sh /arrow /build && |
| /arrow/ci/scripts/csharp_build.sh /arrow /build && |
| /arrow/ci/scripts/go_build.sh /arrow && |
| /arrow/ci/scripts/java_build.sh /arrow /build && |
| /arrow/ci/scripts/js_build.sh /arrow /build && |
| /arrow/ci/scripts/integration_arrow.sh /arrow /build"] |
| |
| ################################ Docs ####################################### |
| |
| ubuntu-docs: |
| # Usage: |
| # docker-compose build ubuntu-cpp |
| # docker-compose build ubuntu-python |
| # docker-compose build ubuntu-docs |
| # docker-compose run --rm ubuntu-docs |
| image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-docs |
| build: |
| context: . |
| dockerfile: ci/docker/linux-apt-docs.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-docs |
| args: |
| r: ${R} |
| jdk: ${JDK} |
| node: ${NODE} |
| base: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-python-3 |
| environment: |
| <<: *ccache |
| ARROW_CUDA: "ON" |
| ARROW_GLIB_GTK_DOC: "true" |
| Protobuf_SOURCE: "BUNDLED" # Need Protobuf >= 3.15 |
| volumes: *ubuntu-volumes |
| command: &docs-command > |
| /bin/bash -c " |
| /arrow/ci/scripts/cpp_build.sh /arrow /build true && |
| /arrow/ci/scripts/c_glib_build.sh /arrow /build && |
| /arrow/ci/scripts/python_build.sh /arrow /build && |
| /arrow/ci/scripts/java_build.sh /arrow /build true && |
| /arrow/ci/scripts/js_build.sh /arrow true && |
| /arrow/ci/scripts/r_build.sh /arrow true && |
| /arrow/ci/scripts/docs_build.sh /arrow /build" |
| |
| ################################# Tools ##################################### |
| |
| ubuntu-lint: |
| # Usage: |
| # docker-compose build ubuntu-cpp |
| # docker-compose build ubuntu-lint |
| # docker-compose run ubuntu-lint |
| image: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-lint |
| build: |
| context: . |
| dockerfile: ci/docker/linux-apt-lint.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-ubuntu-${UBUNTU}-lint |
| args: |
| base: ${REPO}:${ARCH}-ubuntu-${UBUNTU}-cpp |
| clang_tools: ${CLANG_TOOLS} |
| environment: |
| <<: *ccache |
| volumes: *ubuntu-volumes |
| command: archery lint --all --no-clang-tidy --no-iwyu --no-numpydoc |
| |
| ######################### Integration Tests ################################# |
| |
| postgres: |
| # required for the impala service |
| image: postgres |
| ports: |
| - 5432:5432 |
| environment: |
| POSTGRES_PASSWORD: postgres |
| |
| impala: |
| # required for the hiveserver and hdfs tests |
| image: ibisproject/impala:latest |
| hostname: impala |
| links: |
| - postgres:postgres |
| environment: |
| PGPASSWORD: postgres |
| ports: |
| # HDFS |
| - 9020:9020 |
| - 50070:50070 |
| - 50075:50075 |
| - 8020:8020 |
| - 8042:8042 |
| # Hive |
| - 9083:9083 |
| # Impala |
| - 21000:21000 |
| - 21050:21050 |
| - 25000:25000 |
| - 25010:25010 |
| - 25020:25020 |
| |
| conda-cpp-hiveserver2: |
| # Usage: |
| # docker-compose build conda-cpp |
| # docker-compose build conda-cpp-hiveserver2 |
| # docker-compose run conda-cpp-hiveserver2 |
| image: ${REPO}:${ARCH}-conda-cpp |
| links: |
| - impala:impala |
| environment: |
| <<: *ccache |
| ARROW_FLIGHT: "OFF" |
| ARROW_GANDIVA: "OFF" |
| ARROW_PLASMA: "OFF" |
| ARROW_HIVESERVER2: "ON" |
| ARROW_HIVESERVER2_TEST_HOST: impala |
| shm_size: *shm-size |
| volumes: *conda-volumes |
| command: |
| ["/arrow/ci/scripts/cpp_build.sh /arrow /build && |
| /arrow/ci/scripts/integration_hiveserver2.sh /arrow /build"] |
| |
| conda-python-hdfs: |
| # Usage: |
| # docker-compose build conda-cpp |
| # docker-compose build conda-python |
| # docker-compose build conda-python-hdfs |
| # docker-compose run conda-python-hdfs |
| image: ${REPO}:${ARCH}-conda-python-${PYTHON}-hdfs-${HDFS} |
| build: |
| context: . |
| dockerfile: ci/docker/conda-python-hdfs.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-conda-python-${PYTHON}-hdfs-${HDFS} |
| args: |
| repo: ${REPO} |
| arch: ${ARCH} |
| python: ${PYTHON} |
| jdk: ${JDK} |
| # conda-forge doesn't have 3.5.4 so pinning explicitly, but this should |
| # be set to ${MAVEN} |
| maven: 3.5 |
| hdfs: ${HDFS} |
| links: |
| - impala:impala |
| environment: |
| <<: *ccache |
| ARROW_HDFS: "ON" |
| ARROW_HDFS_TEST_HOST: impala |
| ARROW_HDFS_TEST_PORT: 8020 |
| ARROW_HDFS_TEST_USER: hdfs |
| ARROW_S3: "OFF" |
| CMAKE_UNITY_BUILD: "ON" |
| shm_size: *shm-size |
| volumes: &conda-maven-volumes |
| - .:/arrow:delegated |
| - ${DOCKER_VOLUME_PREFIX}maven-cache:/root/.m2:delegated |
| - ${DOCKER_VOLUME_PREFIX}conda-ccache:/ccache:delegated |
| command: |
| ["/arrow/ci/scripts/cpp_build.sh /arrow /build && |
| /arrow/ci/scripts/python_build.sh /arrow /build && |
| /arrow/ci/scripts/integration_hdfs.sh /arrow /build"] |
| |
| conda-python-spark: |
| # Usage: |
| # docker-compose build conda-cpp |
| # docker-compose build conda-python |
| # docker-compose build conda-python-spark |
| # docker-compose run conda-python-spark |
| image: ${REPO}:${ARCH}-conda-python-${PYTHON}-spark-${SPARK} |
| build: |
| context: . |
| dockerfile: ci/docker/conda-python-spark.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-conda-python-${PYTHON}-spark-${SPARK} |
| args: |
| repo: ${REPO} |
| arch: ${ARCH} |
| python: ${PYTHON} |
| jdk: ${JDK} |
| # conda-forge doesn't have 3.5.4 so pinning explicitly, but this should |
| # be set to ${MAVEN} |
| maven: 3.5 |
| spark: ${SPARK} |
| shm_size: *shm-size |
| environment: |
| <<: *ccache |
| volumes: *conda-maven-volumes |
| command: |
| ["/arrow/ci/scripts/cpp_build.sh /arrow /build && |
| /arrow/ci/scripts/python_build.sh /arrow /build && |
| /arrow/ci/scripts/java_build.sh /arrow /build && |
| /arrow/ci/scripts/integration_spark.sh /arrow /spark ${TEST_PYARROW_ONLY:-false}"] |