diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8337cb1148e9f8669aecc9a6ab7558c5a08446b9..c9a57798843efdb196f293435c12b0bcd8d031ff 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -47,6 +47,9 @@ stages:
   # update apt
   - apt-get update
 
+  # create 'ci_deps' folder (if not exists)
+  - mkdir -pv ci_deps
+
 .license_header_template: &license_header_definition
   - cd $CI_PROJECT_DIR
 
@@ -83,13 +86,31 @@ stages:
   -   echo "No changes, nothing to commit!"
   - fi
 
+.install_yamlschemacpp_template: &install_yamlschemacpp_definition
+  - cd ${CI_PROJECT_DIR}/ci_deps
+  - if [ -d yaml-schema-cpp ]; then
+  -   echo "directory yaml-schema-cpp exists"
+  -   cd yaml-schema-cpp
+  -   git checkout main
+  -   git pull
+  - else
+  -   git clone -b main ssh://git@gitlab.iri.upc.edu:2202/labrobotica/algorithms/yaml-schema-cpp.git
+  -   cd yaml-schema-cpp
+  - fi
+  - mkdir -pv build
+  - cd build
+  - cmake -DCMAKE_BUILD_TYPE=release -DBUILD_TESTS=OFF ..
+  - make -j$(nproc)
+  - make install
+  - ldconfig
+
 .build_and_test_template: &build_and_test_definition
   - cd $CI_PROJECT_DIR
   - mkdir -pv build
   - cd build
   - cmake -DCMAKE_BUILD_TYPE=release -DBUILD_DEMOS=ON -DBUILD_TESTS=ON ..
   - make -j$(nproc)
-  - ctest -j$(nproc)
+  - ctest -j$(nproc) --output-on-failure
   # run demos
   - ../bin/hello_wolf
   - ../bin/hello_wolf_autoconf
@@ -111,6 +132,8 @@ build_and_test:bionic:
   image: labrobotica/wolf_deps:18.04
   script:
     - *print_variables_definition
+    - *preliminaries_definition
+    - *install_yamlschemacpp_definition
     - *build_and_test_definition
 
 ############ UBUNTU 20.04 TESTS ############
@@ -119,6 +142,8 @@ build_and_test:focal:
   image: labrobotica/wolf_deps:20.04
   script:
     - *print_variables_definition
+    - *preliminaries_definition
+    - *install_yamlschemacpp_definition
     - *build_and_test_definition
 
 ############ DEPLOY PLUGINS ANY BRANCY EXCEPT FOR main ############