diff --git a/.gitlab-ci-extended.yml b/.gitlab-ci-extended.yml
new file mode 100644
index 0000000000000000000000000000000000000000..97e528780a6e4a7d72f2714ec7af1b1758d2b58f_LmdpdGxhYi1jaS1leHRlbmRlZC55bWw=
--- /dev/null
+++ b/.gitlab-ci-extended.yml
@@ -0,0 +1,10 @@
+---
+# follow this doc to extend the already existing jobs:
+# https://docs.gitlab.com/ee/ci/yaml/includes.html#overriding-external-template-values
+
+# as a reminder the existing jobs are located here:
+# https://forge.extranet.logilab.fr/open-source/gitlab-templates/
+
+# or simply add more jobs here if you need them (use the already existing stages)
+
+# /!\ remember to uncomment the include in the .gitlab-ci.yml /!\
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6045cb2a1a15adcc31ec05260e9aa4c0d94fec5f_LmdpdGxhYi1jaS55bWw=..97e528780a6e4a7d72f2714ec7af1b1758d2b58f_LmdpdGxhYi1jaS55bWw= 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,3 +1,4 @@
+---
 default:
   image: python:3.7
 
@@ -1,15 +2,20 @@
 default:
   image: python:3.7
 
-before_script:
-  - pip install tox
-
-check-manifest:
-  script: tox -e check-manifest
-
-flake8:
-  script: tox -e flake8
-
-py27:
-  script: tox -e py27
+include:
+  # uncomment and uses to customize/extend the configuration here if needed
+  # (it needs to be at the same level than "- project")
+  # - ".gitlab-ci-extended.yml"
+  - project: "open-source/gitlab-ci-templates"
+    ref: "branch/default"
+    file:
+      - "templates/no-duplicated-ci-pipelines.yml"  # use workflow to avoid duplicated pipelines
+      - "templates/lint/flake8.yml"  # will do the equivalent of 'tox -e flake8'
+      - "templates/lint/check-manifest.yml"  # will do the equivalent of 'tox -e check-manifest'
+      - "templates/lint/yamllint.yml"  # will do the equivalent of 'tox -e yamllint'
+      - "templates/tests/py27.yml"  # will do the equivalent of 'tox -e py27'
+      - "templates/tests/py3.yml"  # will do the equivalent of 'tox -e py3'
+      - "templates/build-debian-package.yml"  # will build a .deb and upload it to heptapod files
+      - "templates/create-release-on-heptapod-including-debian-package.yml"  # this will create a release on heptapod AND uses uploaded .deb by build-debian-package
+      - "templates/upload-to-pypi.yml"  # on a new mercurial tag (expected to be done with release-new), will push a release on pypi
 
@@ -15,16 +21,8 @@
 
-py3:
-  script: tox -e py3
-  artifacts:
-    paths:
-      - py3-deprecated-warnings.json
-
-yamllint:
-  rules:
-    - changes:
-        - "**/*.yaml"
-        - "*.yaml"
-        - "**/*.yml"
-        - "*.yml"
-  script:
-    - tox -e yamllint
+stages:
+  - lint
+  - tests
+  - build-debian-package
+  - upload-deb-to-heptapod
+  - release
+  - publish
diff --git a/MANIFEST.in b/MANIFEST.in
index 6045cb2a1a15adcc31ec05260e9aa4c0d94fec5f_TUFOSUZFU1QuaW4=..97e528780a6e4a7d72f2714ec7af1b1758d2b58f_TUFOSUZFU1QuaW4= 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -11,3 +11,4 @@
 include README.rst
 exclude .yamllint
 exclude .cube-doctor.yml
+exclude .gitlab-ci-extended.yml