diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..e4c0e1472456b1a82fd11720543d0570c1bef660
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,129 @@
+# This build file uses template features from YAML so it is generic enough for
+# any Bob project. Don't modify it unless you know what you're doing.
+
+# Definition of global variables (all stages)
+variables:
+  CONDA_ROOT: "${CI_PROJECT_DIR}/miniconda"
+
+
+# Definition of our build pipeline order
+stages:
+  - build
+  - deploy
+  - pypi
+
+
+# Build targets
+.build_template: &build_job
+  stage: build
+  before_script:
+    - mkdir _ci
+    - curl --silent "https://gitlab.idiap.ch/bob/bob.admin/raw/master/gitlab/install.sh" > _ci/install.sh
+    - chmod 755 _ci/install.sh
+    - ./_ci/install.sh _ci master #installs ci support scripts
+    - ./_ci/before_build.sh
+  script:
+    - ./_ci/build.sh
+  after_script:
+    - ./_ci/after_build.sh
+  cache: &build_caches
+    paths:
+      - miniconda.sh
+      - ${CONDA_ROOT}/pkgs/*.tar.bz2
+      - ${CONDA_ROOT}/pkgs/urls.txt
+
+
+.build_linux_template: &linux_build_job
+  <<: *build_job
+  tags:
+    - docker
+  image: continuumio/conda-concourse-ci
+  artifacts:
+    expire_in: 1 week
+    paths:
+      - _ci/
+      - ${CONDA_ROOT}/conda-bld/linux-64/*.tar.bz2
+  cache:
+    <<: *build_caches
+    key: "linux-cache"
+
+
+.build_macosx_template: &macosx_build_job
+  <<: *build_job
+  tags:
+    - macosx
+  artifacts:
+    expire_in: 1 week
+    paths:
+      - _ci/
+      - ${CONDA_ROOT}/conda-bld/osx-64/*.tar.bz2
+  cache:
+    <<: *build_caches
+    key: "macosx-cache"
+
+
+build_linux_36:
+  <<: *linux_build_job
+  variables:
+    PYTHON_VERSION: "3.6"
+    BUILD_EGG: "true"
+  artifacts:
+    expire_in: 1 week
+    paths:
+      - _ci/
+      - dist/*.zip
+      - sphinx
+      - ${CONDA_ROOT}/conda-bld/linux-64/*.tar.bz2
+
+
+build_macosx_36:
+  <<: *macosx_build_job
+  variables:
+    PYTHON_VERSION: "3.6"
+
+
+# Deploy targets
+.deploy_template: &deploy_job
+  stage: deploy
+  before_script:
+    - ./_ci/install.sh _ci master #updates ci support scripts
+  script:
+    - ./_ci/deploy.sh
+  dependencies:
+    - build_linux_36
+    - build_macosx_36
+  tags:
+    - deployer
+
+
+deploy_beta:
+  <<: *deploy_job
+  environment: beta
+  only:
+    - master
+
+
+deploy_stable:
+  <<: *deploy_job
+  environment: stable
+  only:
+    - /^v\d+\.\d+\.\d+([abc]\d*)?$/  # PEP-440 compliant version (tags)
+  except:
+    - branches
+
+
+pypi:
+  stage: pypi
+  environment: pypi
+  only:
+    - /^v\d+\.\d+\.\d+([abc]\d*)?$/  # PEP-440 compliant version (tags)
+  except:
+    - branches
+  before_script:
+    - ./_ci/install.sh _ci master #updates ci support scripts
+  script:
+    - ./_ci/pypi.sh
+  dependencies:
+    - build_linux_36
+  tags:
+    - deployer
diff --git a/conda/conda_build_config.yaml b/conda/conda_build_config.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..7c9e4ffd87a73e6d49982fb5f7e14ebf47786de5
--- /dev/null
+++ b/conda/conda_build_config.yaml
@@ -0,0 +1,223 @@
+macos_min_version:
+  - 10.9
+macos_machine:
+  - x86_64-apple-darwin13.4.0
+MACOSX_DEPLOYMENT_TARGET:
+  - 10.9
+CONDA_BUILD_SYSROOT:            # [osx]
+  - /opt/MacOSX10.9.sdk         # [osx]
+# This helps CMAKE find the sysroot. See
+# https://cmake.org/cmake/help/v3.11/variable/CMAKE_OSX_SYSROOT.html
+SDKROOT:                        # [osx]
+  - /opt/MacOSX10.9.sdk         # [osx]
+# makes autotools verbose
+VERBOSE_AT:
+  - V=1
+# makes cmake verbose
+VERBOSE_CM:
+  - VERBOSE=1
+
+# the blas implementations that we build against
+blas_impl:
+  - mkl
+
+pin_run_as_build:
+  libboost:
+    max_pin: x.x.x
+  py_boost:
+    max_pin: x.x.x
+  boost:
+    max_pin: x.x.x
+
+## the dependencies that we build against multiple versions
+python:
+  - 3.6
+
+zip_keys:
+  -                             # [win]
+    - vc                        # [win]
+    - c_compiler                # [win]
+    - cxx_compiler              # [win]
+    - fortran_compiler_version  # [win]
+    - python                    # [win]
+
+
+# Here is the version of dependencies are used when building packages (build
+# and host requirements). We keep a list of **all of them** here to make sure
+# everything goes as expected in our conda build process. For the version of
+# packages that are used for testing packages, see the recipe of bob-devel.
+# The version here do not necessarily match the versions in bob-devel.
+
+# This version of bob-devel will be used at test time of packages:
+bob_devel:
+  - 2018.12.29
+
+# This version of beat-devel will be used at test time of packages. Notice it
+# uses bob-devel and should have a version that is greater or equal its value
+beat_devel:
+  - 2018.12.29
+
+# The build time only dependencies (build requirements).
+# Updating these to the latest version all the time is OK and a good idea.
+# These versions should match the versions inside bob-devel as well (if they
+# overlap) so update them in both places.
+cmake:
+  - 3.12.2
+pkg_config:
+  - 0.29.2
+cython:
+  - 0.28.1
+
+# The dependencies that we link against (host requirements).
+# Ideally we want to build against the oldest possible version of packages when
+# we are linking against them. It is best to keep this in sync with:
+# https://github.com/AnacondaRecipes/aggregate/blob/master/conda_build_config.yaml
+numpy:
+  - 1.14.5
+boost:
+  - 1.65.1
+cyvlfeat:
+  - 0.4.6
+ffmpeg:
+  - 3.4
+freetype:
+  - 2.8
+giflib:
+  - 5.1.4
+hdf5:
+  - 1.10.1
+jpeg:
+  - 9b
+libblitz:
+  - 1.0.1
+libmatio:
+  - 1.5.11
+libogg:
+  - 1.3.2
+libpng:
+  - 1.6.35
+libsvm:
+  - 3.22
+libtiff:
+  - 4.0.9
+mkl:
+  - 2018.0.3
+openfst:
+  - 1.6.1
+sox:
+  - 14.4.2
+speex:
+  - 1.2.0
+speexdsp:
+  - 1.2rc3
+sqlite:
+  - 3.20.1
+vlfeat:
+  - 0.9.21
+xz:
+  - 5.2.3
+zlib:
+  - 1.2.11
+
+# The dependencies that are needed for runtime only (run requirements).
+# These versions **should** match the versions inside bob-devel recipe.
+caffe:
+  - 1.0
+click:
+  - 6.7
+click_plugins:
+  - 1.0.3
+coverage:
+  - 4.5.1
+dlib:
+  - 19.7
+docopt:
+  - 0.6.2
+jinja2:
+  - 2.10
+kaldi:
+  - 2017.03.13
+matplotlib:
+  - 2.2.3
+menpo:
+  - 0.8.1
+menpofit:
+  - 0.5.0
+mne:
+  - 0.15.2
+mr_developer:
+  - 1.38
+nose:
+  - 1.3.7
+opencv:
+  - 3.3.1
+pillow:
+  - 5.2.0
+pyedflib:
+  - 0.1.11
+pytorch:
+  - 0.4.1
+pyyaml:
+  - 3.13
+requests:
+  - 2.19.1
+schema:
+  - 0.6.7
+scikit_image:
+  - 0.14
+scikit_learn:
+  - 0.19.2
+scipy:
+  - 1.1.0
+setuptools:
+  - 40.2.0
+six:
+  - 1.11.0
+sphinx:
+  - 1.8.1
+sphinx_rtd_theme:
+  - 0.4.1
+sqlalchemy:
+  - 1.2.11
+tabulate:
+  - 0.8.2
+tensorflow:
+  - 1.9.0
+torchvision:
+  - 0.2.1
+zc_buildout:
+  - 2.12.2
+zc_recipe_egg:
+  - 2.0.7
+
+# The dependencies that are needed for runtime only (run requirements) of BEAT
+# packages. These versions **should** match the versions inside beat-devel
+# recipe.
+docker_py:
+  - 3.6.0
+jsonschema:
+  - 2.6.0
+oset:
+  - 0.1.3
+python_graphviz:
+  - 0.8.4
+pyzmq:
+  - 17.1.2
+simplejson:
+  - 3.16.0
+termcolor:
+  - 1.1.0
+sphinxcontrib_programoutput:
+  - 0.11
+sphinxcontrib_httpdomain:
+  - 1.7.0
+nodejs:
+  - 8.9.3
+flask:
+  - 1.0.2
+flask_cors:
+  - 3.0.7
+flask_restful:
+  - 0.3.6
+psycopg2:
+  - 2.7.6.1
diff --git a/conda/meta.yaml b/conda/meta.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..d246b348a439706b5767c0b68b3e34f0870c2ee1
--- /dev/null
+++ b/conda/meta.yaml
@@ -0,0 +1,60 @@
+{% set name = 'bob.devtools' %}
+
+package:
+  name: {{ name }}
+  version: {{ environ.get('BOB_PACKAGE_VERSION', '0.0.1') }}
+
+build:
+  entry_points:
+    - bdt = bob.devtools.scripts.bdt:main
+  number: {{ environ.get('BOB_BUILD_NUMBER', 0) }}
+  run_exports:
+    - {{ pin_subpackage(name) }}
+  script:
+    - cd {{ environ.get('RECIPE_DIR') + '/..' }}
+    {% if environ.get('BUILD_EGG') %}
+    - python setup.py sdist --formats=zip
+    {% endif %}
+    - python setup.py install --single-version-externally-managed --record record.txt
+    # installs the documentation source, readme and license to share/doc
+    - install -d ${PREFIX}/share/doc/{{ name }}
+    - install -m 644 -D README.rst ${PREFIX}/share/doc/{{ name }}
+    - install -m 644 -D LICENSE ${PREFIX}/share/doc/{{ name }}
+    - find doc -type f -exec install -Dm 644 "{}" "${PREFIX}/share/doc/{{ name }}/{}" \;
+
+requirements:
+  host:
+    - python {{ python }}
+    - setuptools {{ setuptools }}
+  run:
+    - python
+    - setuptools
+    - click
+    - click-plugins
+    - conda-build
+    - pytz
+    - python-dateutil
+    - gitpython
+    - python-gitlab
+    - requests
+
+test:
+  requires:
+    - sphinx
+    - sphinx_rtd_theme
+  imports:
+    - {{ name }}
+  commands:
+    - bdt -h
+    - bdt -?
+    - bdt --help
+    - bdt lasttag --help
+    - bdt changelog --help
+    - bdt release --help
+    - sphinx-build -aEW ${PREFIX}/share/doc/{{ name }}/doc {{ environ.get('RECIPE_DIR') + '/../sphinx' }}
+
+about:
+  home: https://www.idiap.ch/software/bob/
+  license: BSD 3-Clause
+  summary: Tools for development and CI integration of Bob packages
+  license_family: BSD
diff --git a/setup.py b/setup.py
index a4160852f92081e45d75a84a1412f61ed2c3a4a3..2ca9417cf117ad8787f5cd8feb2f8dad7a34a5a0 100644
--- a/setup.py
+++ b/setup.py
@@ -10,8 +10,9 @@ requires = [
     'click',
     'click-plugins',
     'conda-build',
-    'python-gitlab',
     'requests',
+    'gitpython',
+    'python-gitlab',
     ]
 
 setup(