blob: 661fe5e70f6c0280aa496fba716eb92e8ccd94e5 [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.
sudo: required
dist: xenial
services:
- docker
cache:
directories:
- $HOME/.ccache
- $HOME/.m2 # Maven
env:
- CCACHE_COMPRESS: 1
- CCACHE_COMPRESSLEVEL: 5
git:
# ARROW-3083: We use a higher clone depth to also have the latest tag in the cloned history.
depth: 250
before_install:
- source ci/travis/before-install.sh
matrix:
fast_finish: true
include:
- name: "Lint, Release tests"
os: linux
language: python
python: "3.6"
before_script:
# Always run RAT checks, in case another build in matrix breaks RAT
- $TRAVIS_BUILD_DIR/ci/travis_release_audit.sh
- $TRAVIS_BUILD_DIR/ci/travis_install_clang_tools.sh
script:
- $TRAVIS_BUILD_DIR/ci/travis_lint.sh
- $TRAVIS_BUILD_DIR/ci/travis_release_test.sh
- name: "C++ unit tests w/ clang 7.0, system packages"
os: linux
language: cpp
before_script:
- if [ $ARROW_CI_CPP_AFFECTED != "1" ]; then exit; fi
- git submodule update --init
- docker-compose build --pull cpp-system-deps
script:
- docker-compose run cpp-system-deps
# Separating Valgrind and C++ coverage makes individual jobs shorter
- name: "C++ unit tests w/ conda-forge toolchain, coverage"
compiler: gcc
language: cpp
os: linux
jdk: openjdk8
env:
- ARROW_BUILD_WARNING_LEVEL=CHECKIN
- ARROW_TRAVIS_COVERAGE=1
- ARROW_TRAVIS_FLIGHT=1
- ARROW_TRAVIS_GANDIVA=1
- ARROW_TRAVIS_GANDIVA_JAVA=1
- ARROW_TRAVIS_ORC=1
- ARROW_TRAVIS_PARQUET=1
- ARROW_TRAVIS_PLASMA=1
- ARROW_TRAVIS_S3=1
- ARROW_TRAVIS_USE_SYSTEM_JAVA=1
- ARROW_TRAVIS_USE_TOOLCHAIN=1
# TODO: This fails in re2 code
# - ARROW_TRAVIS_VALGRIND=1
- ARROW_TRAVIS_VERBOSE=1
# ARROW-6509: disable MIMALLOC on xenial
# - ARROW_TRAVIS_MIMALLOC=1
before_script:
- if [ $ARROW_CI_CPP_AFFECTED != "1" ] && [ $ARROW_CI_JAVA_AFFECTED != "1" ]; then exit; fi
- $TRAVIS_BUILD_DIR/ci/travis_install_clang_tools.sh
- $TRAVIS_BUILD_DIR/ci/travis_install_linux.sh
# If either C++ or Python changed, we must install the C++ libraries
- git submodule update --init
- $TRAVIS_BUILD_DIR/ci/travis_before_script_cpp.sh
script:
- $TRAVIS_BUILD_DIR/ci/travis_script_cpp.sh || travis_terminate 1
- $TRAVIS_BUILD_DIR/ci/travis_script_gandiva_java.sh || travis_terminate 1
- $TRAVIS_BUILD_DIR/ci/travis_upload_cpp_coverage.sh || travis_terminate 1
# -------------------------------------------------------------------------
- name: "Python 3.6 unit tests, conda-forge toolchain, coverage"
compiler: gcc
language: cpp
os: linux
jdk: openjdk8
env:
- ARROW_BUILD_WARNING_LEVEL=CHECKIN
- ARROW_TRAVIS_COVERAGE=1
- ARROW_TRAVIS_FLIGHT=1
- ARROW_TRAVIS_OPTIONAL_INSTALL=1
- ARROW_TRAVIS_PYTHON_DOCS=1
- ARROW_TRAVIS_PYTHON_JVM=1
- ARROW_TRAVIS_USE_SYSTEM_JAVA=1
- ARROW_TRAVIS_USE_TOOLCHAIN=1
- ARROW_TRAVIS_S3=1
# TODO(wesm): Run the benchmarks outside of Travis
# - ARROW_TRAVIS_PYTHON_BENCHMARKS=1
before_script:
- if [ $ARROW_CI_PYTHON_AFFECTED != "1" ] && [ $ARROW_CI_DOCS_AFFECTED != "1" ]; then exit; fi
- $TRAVIS_BUILD_DIR/ci/travis_install_clang_tools.sh
- $TRAVIS_BUILD_DIR/ci/travis_install_linux.sh
- $TRAVIS_BUILD_DIR/ci/travis_install_toolchain.sh
script:
- $TRAVIS_BUILD_DIR/ci/travis_script_java.sh || travis_terminate 1
- export ARROW_TRAVIS_PYTHON_GANDIVA=1
- $TRAVIS_BUILD_DIR/ci/travis_script_python.sh 3.6
- $TRAVIS_BUILD_DIR/ci/travis_upload_cpp_coverage.sh
- name: "[OS X] C++ w/ XCode 9.3"
compiler: clang
osx_image: xcode9.3
os: osx
cache:
addons:
env:
- ARROW_TRAVIS_USE_TOOLCHAIN=1
- ARROW_TRAVIS_PLASMA=1
- ARROW_TRAVIS_FLIGHT=1
- ARROW_TRAVIS_ORC=1
- ARROW_TRAVIS_PARQUET=1
# TODO(ARROW-4763): llvm and llvmdev packages are in conflict:
# https://github.com/conda-forge/llvmdev-feedstock/issues/60
# - ARROW_TRAVIS_GANDIVA=1
# - ARROW_TRAVIS_GANDIVA_JAVA=1
- ARROW_TRAVIS_OPTIONAL_INSTALL=1
- ARROW_TRAVIS_VERBOSE=1
- ARROW_BUILD_WARNING_LEVEL=CHECKIN
- ARROW_TRAVIS_MIMALLOC=1
before_script:
- if [ $ARROW_CI_CPP_AFFECTED != "1" ] && [ $ARROW_CI_JAVA_AFFECTED != "1" ]; then exit; fi
# If either C++ or Python changed, we must install the C++ libraries
- git submodule update --init
- $TRAVIS_BUILD_DIR/ci/travis_before_script_cpp.sh
script:
- $TRAVIS_BUILD_DIR/ci/travis_script_cpp.sh || travis_terminate 1
# Disabled because of ARROW-4763
# - $TRAVIS_BUILD_DIR/ci/travis_script_gandiva_java.sh
- name: "[OS X] Python w/ XCode 9.3"
compiler: clang
osx_image: xcode9.3
os: osx
cache:
addons:
env:
- ARROW_TRAVIS_PLASMA=1
- ARROW_TRAVIS_USE_TOOLCHAIN=1
- ARROW_BUILD_WARNING_LEVEL=CHECKIN
- ARROW_TRAVIS_OPTIONAL_INSTALL=1
- ARROW_TRAVIS_VERBOSE=1
- MACOSX_DEPLOYMENT_TARGET="10.9"
before_script:
script:
- if [ $ARROW_CI_PYTHON_AFFECTED != "1" ]; then exit; fi
- $TRAVIS_BUILD_DIR/ci/travis_script_python.sh 3.6
- name: "Java OpenJDK8 and OpenJDK11"
language: cpp
os: linux
before_script:
- if [ $ARROW_CI_JAVA_AFFECTED != "1" ]; then exit; fi
- docker-compose build --pull java-all-jdks
script:
- docker-compose run java-all-jdks
- name: "Integration w/ OpenJDK 8, conda-forge toolchain"
language: java
os: linux
env: ARROW_TEST_GROUP=integration
jdk: openjdk8
env:
- ARROW_TRAVIS_USE_TOOLCHAIN=1
- ARROW_TRAVIS_FLIGHT=1
- ARROW_TRAVIS_INTEGRATION=1
# TODO(ARROW-4764): Using system java and plasma built with conda doesn't work
#- ARROW_TRAVIS_PLASMA=1
#- ARROW_TRAVIS_PLASMA_JAVA_CLIENT=1
- ARROW_TRAVIS_MIMALLOC=1
before_script:
- if [ $ARROW_CI_INTEGRATION_AFFECTED != "1" ]; then exit; fi
- $TRAVIS_BUILD_DIR/ci/travis_install_clang_tools.sh
- $TRAVIS_BUILD_DIR/ci/travis_install_linux.sh
# C++: Only build integration targets
- export ARROW_CPP_BUILD_TARGETS=arrow-integration
- export ARROW_TRAVIS_OPTIONAL_INSTALL=1
- $TRAVIS_BUILD_DIR/ci/travis_before_script_cpp.sh
# Javascript
- nvm install 11.12
- $TRAVIS_BUILD_DIR/ci/travis_before_script_js.sh
script:
- $TRAVIS_BUILD_DIR/ci/travis_script_integration.sh
# - $TRAVIS_BUILD_DIR/ci/travis_script_plasma_java_client.sh
- name: "NodeJS"
language: node_js
os: linux
node_js:
- '11.12'
before_script:
- if [ $ARROW_CI_JS_AFFECTED != "1" ]; then exit; fi
- $TRAVIS_BUILD_DIR/ci/travis_install_linux.sh
- $TRAVIS_BUILD_DIR/ci/travis_before_script_js.sh
script:
- $TRAVIS_BUILD_DIR/ci/travis_script_js.sh
- name: "C++ & GLib & Ruby w/ gcc 5.4"
compiler: gcc
os: linux
env:
- ARROW_TRAVIS_ORC=1
- ARROW_TRAVIS_GANDIVA=1
- ARROW_TRAVIS_PARQUET=1
- ARROW_TRAVIS_PLASMA=1
- ARROW_TRAVIS_MIMALLOC=1
before_script:
- if [ $ARROW_CI_RUBY_AFFECTED != "1" ]; then exit; fi
- $TRAVIS_BUILD_DIR/ci/travis_install_clang_tools.sh
- $TRAVIS_BUILD_DIR/ci/travis_install_linux.sh
- $TRAVIS_BUILD_DIR/ci/travis_before_script_cpp.sh --only-library
- $TRAVIS_BUILD_DIR/ci/travis_before_script_c_glib.sh
- $TRAVIS_BUILD_DIR/ci/travis_before_script_ruby.sh
script:
- if [ $ARROW_CI_C_GLIB_AFFECTED = "1" ]; then $TRAVIS_BUILD_DIR/ci/travis_script_c_glib.sh; fi
- $TRAVIS_BUILD_DIR/ci/travis_script_ruby.sh
- name: "[OS X] C++ & GLib & Ruby w/ XCode 10.2 & Homebrew"
compiler: clang
osx_image: xcode10.2
os: osx
env:
- ARROW_TRAVIS_FLIGHT=1
- ARROW_TRAVIS_GANDIVA=1
# Disabled until either ORC-480 or ORC-561 is fixed
- ARROW_TRAVIS_ORC=0
- ARROW_TRAVIS_PARQUET=1
- ARROW_TRAVIS_PLASMA=1
- ARROW_TRAVIS_PYTHON=1
- ARROW_TRAVIS_VERBOSE=1
- ARROW_TRAVIS_MIMALLOC=1
cache:
addons:
before_script:
- if [ $ARROW_CI_RUBY_AFFECTED != "1" ]; then exit; fi
- $TRAVIS_BUILD_DIR/ci/travis_install_osx.sh
- $TRAVIS_BUILD_DIR/ci/travis_before_script_cpp.sh --only-library --homebrew
- $TRAVIS_BUILD_DIR/ci/travis_before_script_c_glib.sh
- $TRAVIS_BUILD_DIR/ci/travis_before_script_ruby.sh
script:
- if [ $ARROW_CI_C_GLIB_AFFECTED = "1" ]; then $TRAVIS_BUILD_DIR/ci/travis_script_c_glib.sh; fi
- $TRAVIS_BUILD_DIR/ci/travis_script_ruby.sh
- name: Rust
language: rust
cache: cargo
addons:
apt:
packages:
- libcurl4-openssl-dev
- libelf-dev
- libdw-dev
- binutils-dev
- libssl-dev
- cmake
before_script:
- if [ $ARROW_CI_RUST_AFFECTED != "1" ]; then exit; fi
- $TRAVIS_BUILD_DIR/ci/travis_install_cargo.sh
script:
- RUSTUP_TOOLCHAIN=nightly $TRAVIS_BUILD_DIR/ci/travis_script_rust.sh
before_cache:
cargo install cargo-tarpaulin -f
after_success:
- pushd ${TRAVIS_BUILD_DIR}/rust
# Run coverage for codecov.io
- export ARROW_TEST_DATA=$TRAVIS_BUILD_DIR/testing/data
- export PARQUET_TEST_DATA=$TRAVIS_BUILD_DIR/cpp/submodules/parquet-testing/data
- cargo tarpaulin --out Xml
- bash <(curl -s https://codecov.io/bash) || echo "Codecov did not collect coverage reports"
- name: Go
language: go
go_import_path: github.com/apache/arrow
os: linux
go:
- 1.12.x
before_script:
- if [ $ARROW_CI_GO_AFFECTED != "1" ]; then exit; fi
script:
- $TRAVIS_BUILD_DIR/ci/travis_script_go.sh
after_success:
- pushd ${TRAVIS_BUILD_DIR}/go/arrow
- bash <(curl -s https://codecov.io/bash) || echo "Codecov did not collect coverage reports"
- name: R (with and without libarrow)
language: r
cache: packages
dist: xenial
env:
- ARROW_TRAVIS_PARQUET=1
- ARROW_TRAVIS_USE_SYSTEM=1
- ARROW_TRAVIS_MIMALLOC=1
before_install:
# Have to copy-paste this here because of how R's build steps work
- eval `python $TRAVIS_BUILD_DIR/ci/detect-changes.py`
- if [ $ARROW_CI_R_AFFECTED != "1" ]; then exit; fi
# First check that it builds without libarrow
- pushd ${TRAVIS_BUILD_DIR}/r
- R -e 'install.packages("remotes"); remotes::install_deps(dep = TRUE)'
- R CMD build .
- R CMD check arrow_*tar.gz
- rm arrow_*tar.gz
- popd
# Now, proceed to install the c++ lib and the rest of the job
- |
if [ $TRAVIS_OS_NAME == "linux" ]; then
sudo bash -c "echo -e 'Acquire::Retries 10; Acquire::http::Timeout \"20\";' > /etc/apt/apt.conf.d/99-travis-retry"
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get update -qq
fi
- $TRAVIS_BUILD_DIR/ci/travis_install_clang_tools.sh
# On Xenial, installing clang-7 leads these to get removed,
# but that breaks R, so let's reinstall them.
- sudo apt-get install gfortran gfortran-5 libblas-dev libgfortran-5-dev libgfortran3 liblapack-dev liblapack3
- $TRAVIS_BUILD_DIR/ci/travis_install_linux.sh
- $TRAVIS_BUILD_DIR/ci/travis_before_script_cpp.sh --only-library
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TRAVIS_BUILD_DIR/cpp-install/lib
- export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$TRAVIS_BUILD_DIR/cpp-install/lib/pkgconfig
- export CXX11FLAGS=-Wall
# Add this env var so we can assert in the tests that the library is installed correctly
- export TEST_R_WITH_ARROW=TRUE
- pushd ${TRAVIS_BUILD_DIR}/r
after_success:
- Rscript ../ci/travis_upload_r_coverage.R
after_failure:
- source ci/travis/after-failure.sh
after_script:
- source ci/travis/after-script.sh
env:
global:
- secure: "GcrPtsKUCgNY7HKYjWlHQo8SiFrShDvdZSU8t1m1FJrE+UfK0Dgh9zXmAausM8GmhqSwkF0q4UbLQf2uCnSITWKeEPAL8Mo9eu4ib+ikJx/b3Sk81frgW5ADoHfW1Eyqd8xJNIMwMegJOtRLSDqiXh1CvMlKnY8PyTOGM2DgN9ona/v6p9OFH9Qs0JhBRVXAn0S4ztjumck8E56+01hqRfxbZ88pTfpKghBxYp9PJaMjtGdomjVWlqPaWaWJj+KptT8inV9NK+TVYKx0dXWD+S1Vgr1PytQnLdILOYV23gsOBYqn33ByF/yADl4m3hUjU/qeT0Fi7aWxmVpj+oTJISOSH5N8nIsuNH8mQk2ZzzXHfV7btFvP+cOPRczadoKkT6D6cHA8nQ7b0dphC6bl6SAeSfc/cbhRT+fYnIjg8jFXC8jlyWBr7LR6GXVpc0bND7i300ITo0FuRJhy2OxqPtGo3dKLE7eAcv78tuO0OYJ/kol1PEqFdFkbYbNVbg/cFpbGqiCXDsOtPDbAGBv69YnXdVowSxxs8cRGjSkDydv6ZSytb/Zd4lH/KAomcFNk8adx12O1Lk4sbmVav1cGig5P6OcQKS0jC5IiRb4THcQzVzAkXXbaafKm5sru/NoYxhzmkyhkOc11nTYHKVng+XKWzLCNn7pTTSLitp5+xa4="