diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6b770f168ba9249d6f073d5b2f44a3e3fbd92fee..fe6b977403dd5b2d438c9f0477be6cc5ef4aae44 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,7 +4,7 @@ variables:
   TWINE_REPOSITORY_URL: https://upload.pypi.org/legacy/
 
 before_script:
-  - pip install -r requirements_dev.txt
+  - pip install -r .requirements_dev.txt
 
 stages:
   - quick-checks
diff --git a/requirements_dev.txt b/.requirements_dev.txt
similarity index 100%
rename from requirements_dev.txt
rename to .requirements_dev.txt
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000000000000000000000000000000000000..7a4dbab2ddebe681178716b645311fbfa59ed591
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,24 @@
+dist: xenial
+language: python
+
+python:
+ - "2.7"
+ - "3.5"
+ - "3.6"
+ - "3.7"
+
+install:
+  - pip install -r .requirements_dev.txt
+  - pip install .
+
+script: pytest -v --doctest-modules --cov-report=xml --cov=fast_flow tests/
+
+after_success:
+  - coverage combine
+  - codecov
+
+jobs:
+  include:
+    - stage: test
+      script: flake8 --max-line-length=120 fast_flow tests
+      name: flake8
diff --git a/tox.ini b/tox.ini
index c3f008780d2c47c4246170c2d65a4824c90bb711..00982a2377595782a332418b3d74b8ac8e897192 100644
--- a/tox.ini
+++ b/tox.ini
@@ -17,7 +17,7 @@ commands = flake8 fast_flow --max-line-length=120
 setenv =
     PYTHONPATH = {toxinidir}
 deps =
-    -r{toxinidir}/requirements_dev.txt
+    -r{toxinidir}/.requirements_dev.txt
 commands =
     pip install -U pip
     pytest --basetemp={envtmpdir} tests/