# 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. dist: focal language: minimal cache: directories: - $TRAVIS_BUILD_DIR/.docker addons: apt: packages: - python3-pip services: - docker # Note that the global "env" setting isn't inherited automatically by # matrix entries with their own "env", so we have to insert it explicitly. env: &global_env ARROW_ENABLE_TIMING_TESTS: "OFF" COMPOSE_DOCKER_CLI_BUILD: 1 DOCKER_BUILDKIT: 0 DOCKER_VOLUME_PREFIX: $TRAVIS_BUILD_DIR/.docker/ jobs: include: - name: "C++ on ARM" os: linux arch: arm64-graviton2 # This is required for arm64-graviton2. # https://docs.travis-ci.com/user/multi-cpu-architectures/#example-multi-architecture-build-matrix group: edge # This is required for arm64-graviton2. # https://docs.travis-ci.com/user/multi-cpu-architectures/#testing-on-multiple-cpu-architectures virt: vm env: <<: *global_env ARCH: arm64v8 ARROW_CI_MODULES: "CPP" DOCKER_IMAGE_ID: ubuntu-cpp # ARROW_USE_GLOG=OFF is needed to avoid build error caused by # glog and CMAKE_UNITY_BUILD=ON. DOCKER_RUN_ARGS: >- " -e ARROW_BUILD_STATIC=OFF -e ARROW_GCS=OFF -e ARROW_ORC=OFF -e ARROW_USE_GLOG=OFF -e CMAKE_UNITY_BUILD=ON " # The LLVM's APT repository doesn't provide arm64 binaries. # We should use LLVM provided by Ubuntu. LLVM: "10" UBUNTU: "20.04" - name: "Go on ARM" os: linux arch: arm64-graviton2 group: edge virt: vm env: <<: *global_env ARCH: arm64v8 ARROW_CI_MODULES: "GO" DOCKER_IMAGE_ID: debian-go - name: "C++ on s390x" os: linux arch: s390x env: <<: *global_env ARCH: s390x ARROW_CI_MODULES: "CPP" DOCKER_IMAGE_ID: ubuntu-cpp # Can't enable ARROW_MIMALLOC because of failures in memory pool tests. # Can't enable ARROW_S3 because compiler is killed while compiling # aws-sdk-cpp. DOCKER_RUN_ARGS: >- " -e ARROW_BUILD_STATIC=OFF -e ARROW_FLIGHT=ON -e ARROW_GCS=OFF -e ARROW_MIMALLOC=OFF -e ARROW_ORC=OFF -e ARROW_PARQUET=OFF -e ARROW_S3=OFF -e CMAKE_UNITY_BUILD=ON -e CPP_MAKE_PARALLELISM=2 -e PARQUET_BUILD_EXAMPLES=OFF -e PARQUET_BUILD_EXECUTABLES=OFF -e Protobuf_SOURCE=BUNDLED -e gRPC_SOURCE=BUNDLED " # The LLVM's APT repository causes download error for s390x binary # We should use the LLVM provided by the default APT repository LLVM: "10" UBUNTU: "20.04" - name: "Go on s390x" os: linux arch: s390x env: <<: *global_env ARCH: s390x ARROW_CI_MODULES: "GO" DOCKER_IMAGE_ID: debian-go - name: "Java on s390x" os: linux arch: s390x env: <<: *global_env ARCH: s390x ARROW_CI_MODULES: "JAVA" DOCKER_IMAGE_ID: debian-java JDK: 11 allow_failures: - name: "Go on ARM" - name: "Go on s390x" - name: "Java on s390x" before_install: - eval "$(python ci/detect-changes.py)" - | arrow_ci_affected=no for arrow_ci_module in ${ARROW_CI_MODULES}; do arrow_ci_affected_variable=ARROW_CI_${arrow_ci_module}_AFFECTED if [ "$(eval "echo \$${arrow_ci_affected_variable}")" = "1" ]; then arrow_ci_affected=yes fi done if [ "${arrow_ci_affected}" = "no" ]; then travis_terminate 0 fi install: - sudo -H pip3 install --upgrade pip - sudo -H pip3 install 'docker-compose>=1.27.0' - sudo -H pip3 install -e dev/archery[docker] script: - | archery docker run \ ${DOCKER_RUN_ARGS} \ --volume ${PWD}/build:/build \ ${DOCKER_IMAGE_ID} after_success: - | if [ "${TRAVIS_EVENT_TYPE}" = "push" -a \ "${TRAVIS_REPO_SLUG}" = "apache/arrow" ]; then archery docker push ${DOCKER_IMAGE_ID} || : fi