Revision 85dbdf2586d04d0d833592c26cbede75d8c923d3 authored by Peter Dillinger on 13 March 2020, 20:36:45 UTC, committed by Facebook GitHub Bot on 13 March 2020, 20:39:03 UTC
Summary:
After we had a lot of failures with maven.org downloads, we
wanted an alternative location for downloading binary dependencies.
Hosting them through github would have been good in terms of
organizational and network dependencies, but that approach seems to be
awkward (fake releases, so would need a 'rocksdb-deps' repo) and
strangely complicated for Facebook policy on open source repositories.

This commit moves the downloads (that are not officially hosted by
others on github) from my personal rocksdb fork to an S3 bucket owned
by the Facebook RocksDB AWS account. Facebook employees can access
this through an internal tool, and we should be able to grant permission
to outside collaborators.

Assuming this works out, I will back-port to older branches to stabilize
their CI testing as well.
Pull Request resolved: https://github.com/facebook/rocksdb/pull/6526

Test Plan: CI

Differential Revision: D20430130

Pulled By: pdillinger

fbshipit-source-id: df52394a65e0a57942db3039bdaade8a4d520cb2
1 parent 5c30e6c
Raw File
.travis.yml
dist: xenial
language: cpp
os:
  - linux
  - osx
arch:
  - amd64
  - arm64
  - ppc64le
compiler:
  - clang
  - gcc
osx_image: xcode9.4
cache:
  - ccache

addons:
  apt:
    sources:
      - ubuntu-toolchain-r-test
    packages:
      - libgflags-dev
      - libbz2-dev
      - liblz4-dev
      - libsnappy-dev
      - liblzma-dev  # xv
      - libzstd-dev
      - zlib1g-dev
  homebrew:
    update: true
    packages:
      - ccache
      - gflags
      - lz4
      - snappy
      - xz
      - zstd

env:
  - TEST_GROUP=platform_dependent # 16-18 minutes
  - TEST_GROUP=1 # 33-35 minutes
  - TEST_GROUP=2 # 18-20 minutes
  - TEST_GROUP=3 # 20-22 minutes
  - TEST_GROUP=4 # 12-14 minutes
  # Run java tests
  - JOB_NAME=java_test # 4-11 minutes
  # Build ROCKSDB_LITE
  - JOB_NAME=lite_build # 3-4 minutes
  # Build examples
  - JOB_NAME=examples # 5-7 minutes
  - JOB_NAME=cmake # 3-5 minutes
  - JOB_NAME=cmake-gcc8 # 3-5 minutes
  - JOB_NAME=cmake-mingw # 3 minutes

matrix:
  exclude:
  - os: osx
    env: TEST_GROUP=1
  - os: osx
    env: TEST_GROUP=2
  - os: osx
    env: TEST_GROUP=3
  - os: osx
    env: TEST_GROUP=4
  - os: osx
    env: JOB_NAME=cmake-gcc8
  - os: osx
    env: JOB_NAME=cmake-mingw
  - os: osx
    arch: ppc64le
  - os: osx
    compiler: gcc
  - os : linux
    arch: arm64
    env: JOB_NAME=cmake-mingw
  - os: linux
    arch: ppc64le
    env: JOB_NAME=cmake-mingw
  - os: linux
    compiler: clang

install:
  - if [ "${TRAVIS_OS_NAME}" == osx ]; then
      PATH=$PATH:/usr/local/opt/ccache/libexec;
    fi
  - if [ "${JOB_NAME}" == cmake-gcc8 ]; then
      sudo apt-get install -y g++-8;
      CC=gcc-8 && CXX=g++-8;
    fi
  - if [ "${JOB_NAME}" == cmake-mingw ]; then
      sudo apt-get install -y mingw-w64 ;
    fi
  - if [[ "${JOB_NAME}" == cmake* ]] && [ "${TRAVIS_OS_NAME}" == linux ]; then
      CMAKE_DIST_URL="https://rocksdb-deps.s3-us-west-2.amazonaws.com/cmake/cmake-3.14.5-Linux-$(uname -m).tar.bz2";
      TAR_OPT="--strip-components=1 -xj";
      if [ "aarch64" == "$(uname -m)" ]; then
        sudo apt-get install -y libuv1 librhash0;
        sudo apt-get upgrade -y libstdc++6;
      fi;
      mkdir cmake-dist && curl --silent --fail --show-error --location "${CMAKE_DIST_URL}" | tar -C cmake-dist ${TAR_OPT} && export PATH=$PWD/cmake-dist/bin:$PATH;
    fi
  - |
    if [[ "${JOB_NAME}" == java_test || "${JOB_NAME}" == cmake* ]]; then
      # Ensure JDK 8
      if [ "${TRAVIS_OS_NAME}" == osx ]; then
        brew tap AdoptOpenJDK/openjdk
        brew cask install adoptopenjdk8
        export JAVA_HOME=$(/usr/libexec/java_home)
      else
        sudo apt-get install -y openjdk-8-jdk
        export PATH=/usr/lib/jvm/java-8-openjdk-$(dpkg --print-architecture)/bin:$PATH
        export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-$(dpkg --print-architecture)
      fi
      echo "JAVA_HOME=${JAVA_HOME}"
      which java && java -version
      which javac && javac -version
    fi

before_script:
  # Increase the maximum number of open file descriptors, since some tests use
  # more FDs than the default limit.
  - ulimit -n 8192

script:
  - ${CXX} --version
  - if [ `command -v ccache` ]; then ccache -C; fi
  - case $TEST_GROUP in
    platform_dependent)
      OPT=-DTRAVIS V=1 ROCKSDBTESTS_END=db_block_cache_test make -j4 all_but_some_tests check_some
      ;;
    1)
      OPT=-DTRAVIS V=1 ROCKSDBTESTS_START=db_block_cache_test ROCKSDBTESTS_END=db_iter_test make -j4 check_some
      ;;
    2)
      OPT="-DTRAVIS -DROCKSDB_NAMESPACE=alternative_rocksdb_ns" V=1 make -j4 tools && OPT="-DTRAVIS -DROCKSDB_NAMESPACE=alternative_rocksdb_ns" V=1 ROCKSDBTESTS_START=db_iter_test ROCKSDBTESTS_END=options_file_test make -j4 check_some
      ;;
    3)
      OPT=-DTRAVIS V=1 ROCKSDBTESTS_START=options_file_test ROCKSDBTESTS_END=write_prepared_transaction_test make -j4 check_some
      ;;
    4)
      OPT=-DTRAVIS V=1 ROCKSDBTESTS_START=write_prepared_transaction_test make -j4 check_some
      ;;
    esac
  - case $JOB_NAME in
    java_test)
      OPT=-DTRAVIS V=1 make rocksdbjava jtest
      ;;
    lite_build)
      OPT='-DTRAVIS -DROCKSDB_LITE' V=1 make -j4 static_lib tools
      ;;
    examples)
      OPT=-DTRAVIS V=1 make -j4 static_lib && cd examples && make -j4
      ;;
    cmake-mingw)
      sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix;
      mkdir build && cd build && cmake -DJNI=1 -DWITH_GFLAGS=OFF .. -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ -DCMAKE_SYSTEM_NAME=Windows && make -j4 rocksdb rocksdbjni
      ;;
    cmake*)
      mkdir build && cd build && cmake -DJNI=1 .. -DCMAKE_BUILD_TYPE=Release && make -j4 rocksdb rocksdbjni
      ;;
    esac
notifications:
    email:
      - leveldb@fb.com
back to top