diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 58d3e5c77576466992154fde308311b4a171da5a..1c6a0c174b55419ae10414cac9f3b134e91ce8bc 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -115,7 +115,12 @@ black:
     - pip install black
   script:
     - black --check --diff api/
-
+  only:
+    refs:
+      - merge_requests
+    changes:
+      - .gitlab-ci.yml
+      - api/**/*
 flake8:
   image: python:3.6
   stage: lint
@@ -129,6 +134,12 @@ flake8:
     key: "$CI_PROJECT_ID__flake8_pip_cache"
     paths:
       - "$PIP_CACHE_DIR"
+  only:
+    refs:
+      - merge_requests
+    changes:
+      - .gitlab-ci.yml
+      - api/**/*
 
 test_api:
   services:
@@ -145,7 +156,14 @@ test_api:
     FUNKWHALE_URL: "https://funkwhale.ci"
     DJANGO_SETTINGS_MODULE: config.settings.local
   only:
-    - branches
+    refs:
+      - develop@funkwhale/funkwhale
+      - master@funkwhale/funkwhale
+      - tags
+      - merge_requests
+    changes:
+      - .gitlab-ci.yml
+      - api/**/*
   before_script:
     - cd api
     - sed -i '/Pillow/d' requirements/base.txt
@@ -163,7 +181,14 @@ test_front:
   before_script:
     - cd front
   only:
-    - branches
+    refs:
+      - develop@funkwhale/funkwhale
+      - master@funkwhale/funkwhale
+      - tags
+      - merge_requests
+    changes:
+      - .gitlab-ci.yml
+      - front/**/*
   script:
     - yarn install --check-files
     - yarn test:unit
@@ -205,6 +230,33 @@ build_front:
   tags:
     - docker
 
+
+build-doc:
+  stage: test
+  image: python:3.6
+  variables:
+    BUILD_PATH: "../public"
+  before_script:
+    - cd docs
+    - apt-get update
+    - apt-get install -y graphviz
+    - pip install sphinx
+  script:
+    - ./build_docs.sh
+  cache:
+    key: "$CI_PROJECT_ID__sphinx"
+    paths:
+      - "$PIP_CACHE_DIR"
+  only:
+    refs:
+      - merge_requests
+    changes:
+      - .gitlab-ci.yml
+      - docs/**/*
+
+  tags:
+    - docker
+
 pages:
   stage: test
   image: python:3.6
@@ -226,6 +278,7 @@ pages:
       - public
   only:
     - master@funkwhale/funkwhale
+
   tags:
     - docker