diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5ffeb3129d8392f84472b70199c9d101fa7b7a82..e8d8f128d519040eee19b3c385037f386c885c97 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -28,6 +28,10 @@ stages:
   # create ci_deps folder (if not exists)
   - mkdir -pv ci_deps
 
+  # manually source ros setup.bash
+  - source /root/catkin_ws/devel/setup.bash
+  - roscd # check that it works
+
 .license_header_template: &license_header_definition
   - cd $CI_PROJECT_DIR
 
@@ -67,6 +71,7 @@ stages:
   - if [ -d wolf ]; then
   -   echo "directory wolf exists"
   -   cd wolf
+  -   git checkout devel
   -   git pull
   -   git checkout $WOLF_CORE_BRANCH
   - else
@@ -138,6 +143,7 @@ stages:
   - if [ -d laser ]; then
   -   echo "directory laser exists"
   -   cd laser
+  -   git checkout devel
   -   git pull
   -   git checkout $WOLF_LASER_BRANCH
   - else
@@ -155,10 +161,20 @@ stages:
   - ldconfig
 
 .clone_wolfrosnode_template: &clone_wolfrosnode_definition
-  - echo "TODO clone wolf_ros_node branch ${WOLF_ROS_CORE_BRANCH}"
+  - roscd
+  - cd ../src
+  - git clone ssh://git@gitlab.iri.upc.edu:2202/mobile_robotics/wolf_projects/wolf_ros/wolf_ros_node.git
+  - cd wolf_ros_node
+  - git checkout $WOLF_ROS_CORE_BRANCH
 
 .build_and_test_template: &build_and_test_definition
-  - echo "TODO"
+  - roscd
+  - cd ../src
+  - git clone ssh://git@gitlab.iri.upc.edu:2202/${CI_PROJECT_PATH}.git
+  - cd wolf_ros_laser
+  - git checkout $CI_COMMIT_BRANCH
+  - cd ../..
+  - catkin_make
 
 ############ LICENSE HEADERS ############
 license_headers:
@@ -236,6 +252,36 @@ build_and_test:bionic:
   script:
     - *build_and_test_definition
 
+############ UBUNTU 20.04 TEST ############
+build_and_test:focal:
+  stage: build_and_test
+  image: labrobotica/wolf_deps:20.04
+  cache:
+    - key: wolf-focal
+      paths:
+      - ci_deps/wolf/
+    - key: laserscanutils-focal
+      paths:
+      - ci_deps/laser_scan_utils/
+    - key: csm-focal
+      paths:
+      - ci_deps/csm/
+    - key: falko-focal
+      paths:
+      - ci_deps/falkolib/
+  except:
+    - master
+  before_script:
+    - *preliminaries_definition
+    - *install_wolf_definition
+    - *install_csm_definition
+    - *install_falko_definition
+    - *install_laserscanutils_definition
+    - *install_wolflaser_definition
+    - *clone_wolfrosnode_definition
+  script:
+    - *build_and_test_definition
+
 ############ RUN DEMOS ############
 demo_laser:
   stage: demos