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"
+}