diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a6013ad5f5405d5b0a3d5e9791d1c8bbccf2ae32..a9dab676b670c6deca2ef7a86b35063777e1dcf8 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -6,7 +6,6 @@ stages:
   - build
 
 .general:
-  only: [merge_requests]
   retry:
     max: 2
     when:
@@ -17,14 +16,45 @@ stages:
 
 native-build:
   extends: .general
+  only: [merge_requests]
   stage: build
   image: registry.orfeo-toolbox.org/gbonnefille/otb-build-env/otb-ubuntu-native:18.04
   script:
     - ctest -VV -S CI/main_ci.cmake -DIMAGE_NAME:string=ubuntu-18.04-gcc
 
-shark-build:
+.build-common:
   extends: .general
   stage: build
   image: registry.orfeo-toolbox.org/gbonnefille/otb-build-env/otb-ubuntu-shark:18.04
   script:
     - ctest -VV -S CI/main_ci.cmake -DIMAGE_NAME:string=ubuntu-18.04-llvm-shark
+
+build-wip:
+  extends: .build-common
+  variables:
+    OTB_CI_PROFILE: 'wip'
+  except:
+    - merge_requests
+    - develop
+    - /^release-[0-9]+\.[0-9]+$/
+
+build-mr:
+  extends: .build-common
+  variables:
+    OTB_CI_PROFILE: 'mr'
+  only:
+    - merge_requests
+
+build-develop:
+  extends: .build-common
+  variables:
+    OTB_CI_PROFILE: 'develop'
+  only:
+    - develop
+
+build-release:
+  extends: .build-common
+  variables:
+    OTB_CI_PROFILE: 'release'
+  only:
+    - /^release-[0-9]+\.[0-9]+$/
diff --git a/CI/main_ci.cmake b/CI/main_ci.cmake
index 1d6d215ee2669133621cee707e82aade91d75564..5f0c1e1a210b18bf8e29199864c377555d9eda94 100644
--- a/CI/main_ci.cmake
+++ b/CI/main_ci.cmake
@@ -42,6 +42,7 @@ set (CMAKE_COMMAND "cmake")
 set (OTB_DATA_ROOT "${OTB_SOURCE_DIR}/otb-data/") # todo
 set (OTB_LARGEINPUT_ROOT "") # todo
 
+message(STATUS "CI profile : $ENV{OTB_CI_PROFILE}")
 
 #The following file set the CONFIGURE_OPTIONS variable
 set (CONFIGURE_OPTIONS  "")