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..92fb427c3fded046e52b1506abac912f09caf076 100644
--- a/CI/main_ci.cmake
+++ b/CI/main_ci.cmake
@@ -26,7 +26,17 @@ set (ENV{LANG} "C") # Only ascii output
 set (CTEST_BUILD_CONFIGURATION "Release")
 set (CTEST_CMAKE_GENERATOR "Ninja")
 
-set (CTEST_BUILD_NAME "$ENV{CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}_to_$ENV{CI_MERGE_REQUEST_TARGET_BRANCH_NAME}")
+# Find the build name
+set(ci_mr_source "$ENV{CI_MERGE_REQUEST_SOURCE_BRANCH_NAME}")
+set(ci_mr_target "$ENV{CI_MERGE_REQUEST_TARGET_BRANCH_NAME}")
+set(ci_ref_name "$ENV{CI_COMMIT_REF_NAME}")
+set (CTEST_BUILD_NAME "$ENV{CI_COMMIT_SHORT_SHA}")
+if(ci_mr_source AND ci_mr_target)
+  set (CTEST_BUILD_NAME "${CTEST_BUILD_NAME} (${ci_mr_source} to ${ci_mr_target})")
+elseif(ci_ref_name)
+  set (CTEST_BUILD_NAME "${CTEST_BUILD_NAME} (${ci_ref_name})")
+endif()
+
 set (CTEST_SITE "${IMAGE_NAME}")
 
 # Directory variable
@@ -42,6 +52,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  "")