diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..2b674a5d1827cd701dd8e8c29df3a4f0e2d93842 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,36 @@ +# Travis configuration file using the build matrix feature +# Read more under http://docs.travis-ci.com/user/build-configuration/ +# THIS SCRIPT IS SUPPOSED TO BE AN EXAMPLE. MODIFY IT ACCORDING TO YOUR NEEDS! + +sudo: false +language: python +virtualenv: + system_site_packages: false +before_install: + - sudo apt-get install -y ninja build-essential +addons: + apt: + update: true +matrix: + fast_finish: true + include: + - python: 3.6 + env: DISTRIB="ubuntu" TOX_PYTHON_VERSION="py36" COVERAGE="true" + - env: DISTRIB="conda" PYTHON_VERSION="3.6" COVERAGE="false" +install: + - source tests/travis_install.sh +before_script: + - git config --global user.email "you@example.com" + - git config --global user.name "Your Name" +script: + - pip install -e . + - tox + - | +after_success: + - if [[ "$COVERAGE" == "true" ]]; then coveralls || echo "failed"; fi +after_script: + - travis-cleanup +cache: + pip: true + directories: + - $HOME/miniconda diff --git a/tests/travis_install.sh b/tests/travis_install.sh new file mode 100644 index 0000000000000000000000000000000000000000..c3d72c8ab871c4fa4f8049af0be5ad89cdc1675a --- /dev/null +++ b/tests/travis_install.sh @@ -0,0 +1,61 @@ +#!/bin/bash +# This script is meant to be called by the "install" step defined in +# .travis.yml. See http://docs.travis-ci.com/ for more details. +# The behavior of the script is controlled by environment variabled defined +# in the .travis.yml in the top level folder of the project. +# +# This script is inspired by Scikit-Learn (http://scikit-learn.org/) +# +# THIS SCRIPT IS SUPPOSED TO BE AN EXAMPLE. MODIFY IT ACCORDING TO YOUR NEEDS! + +set -e + +if [[ "$DISTRIB" == "conda" ]]; then + # Deactivate the travis-provided virtual environment and setup a + # conda-based environment instead + deactivate + + if [[ -f "$HOME/miniconda/bin/conda" ]]; then + echo "Skip install conda [cached]" + else + # By default, travis caching mechanism creates an empty dir in the + # beginning of the build, but conda installer aborts if it finds an + # existing folder, so let's just remove it: + rm -rf "$HOME/miniconda" + + # Use the miniconda installer for faster download / install of conda + # itself + wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh \ + -O miniconda.sh + chmod +x miniconda.sh && ./miniconda.sh -b -p $HOME/miniconda + fi + export PATH=$HOME/miniconda/bin:$PATH + # Make sure to use the most updated version + conda update --yes conda + + # Configure the conda environment and put it in the path using the + # provided versions + # (prefer local venv, since the miniconda folder is cached) + conda create -p ./.venv --yes python=${PYTHON_VERSION} pip virtualenv + source activate ./.venv +fi + +# for all +pip install -U pip setuptools +pip install tox + +if [[ "$COVERAGE" == "true" ]]; then + pip install -U pytest-cov pytest-virtualenv coverage coveralls flake8 +fi + + +travis-cleanup() { + printf "Cleaning up environments ... " # printf avoids new lines + if [[ "$DISTRIB" == "conda" ]]; then + # Force the env to be recreated next time, for build consistency + source deactivate + conda remove -p ./.venv --all --yes + rm -rf ./.venv + fi + echo "DONE" +}