diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8cacf8398a4277f4f19b5048d412f9e63d9c2931..8547f25c59269e395da00fab7cb87b9c100e113b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,5 @@ stages: + - license - none - csm - falko @@ -27,8 +28,11 @@ stages: - apt-get update - ldconfig -.build_install_wolf_template: &build_install_wolf_definition - - cd $CI_BUILDS_DIR + # create 'ci_deps' folder (if not exists) + - mkdir -pv ci_deps + +.install_wolf_template: &install_wolf_definition + - cd ${CI_PROJECT_DIR}/ci_deps - if [ -d wolf ]; then - echo "directory wolf exists" - cd wolf @@ -42,12 +46,46 @@ stages: - mkdir -pv build - cd build - cmake -DCMAKE_BUILD_TYPE=release -DBUILD_EXAMPLES=ON -DBUILD_TESTS=ON .. - - make -j$WOLF_N_PROC - - ctest -j$WOLF_N_PROC + - make -j$(nproc) + - ctest -j$(nproc) - make install -.build_install_laserscanutils_template: &build_install_laserscanutils_definition - - cd $CI_BUILDS_DIR +.license_header_template: &license_header_definition + - cd $CI_PROJECT_DIR + + # configure git + - export CI_NEW_BRANCH=ci_processing$RANDOM + - echo creating new temporary branch... $CI_NEW_BRANCH + - git config --global user.email "${CI_EMAIL}" + - git config --global user.name "${CI_USERNAME}" + - git checkout -b $CI_NEW_BRANCH # temporary branch + + # license headers + - export CURRENT_YEAR=$( date +'%Y' ) + - echo "current year:" ${CURRENT_YEAR} + - if [ -f license_header_${CURRENT_YEAR}.txt ]; then + # add license headers to new files + - echo "File license_header_${CURRENT_YEAR}.txt already exists. License headers are assumed to be updated. Adding headers to new files..." + - ./ci_deps/wolf/wolf_scripts/license_manager.sh --add --path=. --license-header=license_header_${CURRENT_YEAR}.txt --exclude=ci_deps + - else + # update license headers of all files + - export PREV_YEAR=$(( CURRENT_YEAR-1 )) + - echo "Creating new file license_header_${CURRENT_YEAR}.txt..." + - git mv license_header_${PREV_YEAR}.txt license_header_${CURRENT_YEAR}.txt + - sed -i "s/${PREV_YEAR}/${PREV_YEAR},${CURRENT_YEAR}/g" license_header_${CURRENT_YEAR}.txt + - ./ci_deps/wolf/wolf_scripts/license_manager.sh --update --path=. --license-header=license_header_${CURRENT_YEAR}.txt --exclude=ci_deps + - fi + + # push changes (if any) + - if git commit -a -m "[skip ci] license headers added or modified" ; then + - git remote set-url --push origin "ssh://git@gitlab.iri.upc.edu:2202/${CI_PROJECT_PATH}.git" + - git push origin $CI_NEW_BRANCH:${CI_COMMIT_REF_NAME} + - else + - echo "No changes, nothing to commit!" + - fi + +.install_laserscanutils_template: &install_laserscanutils_definition + - cd ${CI_PROJECT_DIR}/ci_deps - if [ -d laser_scan_utils ]; then - echo "directory laser_scan_utils exists" - cd laser_scan_utils @@ -60,11 +98,11 @@ stages: - cd build - rm -rf * - cmake -DCMAKE_BUILD_TYPE=release .. - - make -j$WOLF_N_PROC + - make -j$(nproc) - make install -.build_install_csm_template: &build_install_csm_definition - - cd $CI_BUILDS_DIR +.install_csm_template: &install_csm_definition + - cd ${CI_PROJECT_DIR}/ci_deps - apt-get install -y libgsl-dev - if [ -d csm ]; then - echo "directory csm exists" @@ -75,11 +113,11 @@ stages: - cd csm - fi - cmake . - - make -j$WOLF_N_PROC + - make -j$(nproc) - make install -.build_install_falko_template: &build_install_falko_definition - - cd $CI_BUILDS_DIR +.install_falko_template: &install_falko_definition + - cd ${CI_PROJECT_DIR}/ci_deps - if [ -d falkolib ]; then - echo "directory falkolib exists" - cd falkolib @@ -91,18 +129,34 @@ stages: - mkdir -pv build - cd build - cmake .. - - make -j$WOLF_N_PROC + - make -j$(nproc) - make install .build_and_test_template: &build_and_test_definition - - cd $CI_PROJECT_DIR + - cd ${CI_PROJECT_DIR}/ci_deps - mkdir -pv build - cd build - cmake -DCMAKE_BUILD_TYPE=release -DBUILD_EXAMPLES=ON -DBUILD_TESTS=ON .. - - make -j$WOLF_N_PROC + - make -j$(nproc) - ctest - make install +############ LICENSE HEADERS ############ +license_headers: + stage: license + image: labrobotica/wolf_deps:16.04 + cache: + - key: wolf-xenial + paths: + - ci_deps/wolf/ + except: + - master + before_script: + - *preliminaries_definition + - *install_wolf_definition + script: + - *license_header_definition + ############ UBUNTU 16.04 TESTS ############ build_and_test_none:xenial: stage: none @@ -110,16 +164,16 @@ build_and_test_none:xenial: cache: - key: laserscanutils-xenial paths: - - ${CI_BUILDS_DIR}/laser_scan_utils/ + - ci_deps/laser_scan_utils/ - key: wolf-xenial paths: - - ${CI_BUILDS_DIR}/wolf/ + - ci_deps/wolf/ except: - master before_script: - *preliminaries_definition - - *build_install_wolf_definition - - *build_install_laserscanutils_definition + - *install_wolf_definition + - *install_laserscanutils_definition - ldconfig # update links (shared libraries) script: - *build_and_test_definition @@ -130,20 +184,20 @@ build_and_test_csm:xenial: cache: - key: wolf-xenial paths: - - ${CI_BUILDS_DIR}/wolf/ + - ci_deps/wolf/ - key: laserscanutils-xenial paths: - - ${CI_BUILDS_DIR}/laser_scan_utils/ + - ci_deps/laser_scan_utils/ - key: csm-xenial paths: - - ${CI_BUILDS_DIR}/csm/ + - ci_deps/csm/ except: - master before_script: - *preliminaries_definition - - *build_install_wolf_definition - - *build_install_csm_definition - - *build_install_laserscanutils_definition + - *install_wolf_definition + - *install_csm_definition + - *install_laserscanutils_definition - ldconfig # update links (shared libraries) script: @@ -155,20 +209,20 @@ build_and_test_falko:xenial: cache: - key: wolf-xenial paths: - - ${CI_BUILDS_DIR}/wolf/ + - ci_deps/wolf/ - key: laserscanutils-xenial paths: - - ${CI_BUILDS_DIR}/laser_scan_utils/ + - ci_deps/laser_scan_utils/ - key: falko-xenial paths: - - ${CI_BUILDS_DIR}/falkolib/ + - ci_deps/falkolib/ except: - master before_script: - *preliminaries_definition - - *build_install_wolf_definition - - *build_install_falko_definition - - *build_install_laserscanutils_definition + - *install_wolf_definition + - *install_falko_definition + - *install_laserscanutils_definition - ldconfig # update links (shared libraries) script: @@ -180,24 +234,24 @@ build_and_test_csm_falko:xenial: cache: - key: wolf-xenial paths: - - ${CI_BUILDS_DIR}/wolf/ + - ci_deps/wolf/ - key: laserscanutils-xenial paths: - - ${CI_BUILDS_DIR}/laser_scan_utils/ + - ci_deps/laser_scan_utils/ - key: csm-xenial paths: - - ${CI_BUILDS_DIR}/csm/ + - ci_deps/csm/ - key: falko-xenial paths: - - ${CI_BUILDS_DIR}/falkolib/ + - ci_deps/falkolib/ except: - master before_script: - *preliminaries_definition - - *build_install_wolf_definition - - *build_install_falko_definition - - *build_install_csm_definition - - *build_install_laserscanutils_definition + - *install_wolf_definition + - *install_falko_definition + - *install_csm_definition + - *install_laserscanutils_definition - ldconfig # update links (shared libraries) script: @@ -210,16 +264,16 @@ build_and_test_none:bionic: cache: - key: wolf-bionic paths: - - ${CI_BUILDS_DIR}/wolf/ + - ci_deps/wolf/ - key: laserscanutils-bionic paths: - - ${CI_BUILDS_DIR}/laser_scan_utils/ + - ci_deps/laser_scan_utils/ except: - master before_script: - *preliminaries_definition - - *build_install_wolf_definition - - *build_install_laserscanutils_definition + - *install_wolf_definition + - *install_laserscanutils_definition - ldconfig # update links (shared libraries) script: - *build_and_test_definition @@ -230,20 +284,20 @@ build_and_test_csm:bionic: cache: - key: wolf-bionic paths: - - ${CI_BUILDS_DIR}/wolf/ + - ci_deps/wolf/ - key: laserscanutils-bionic paths: - - ${CI_BUILDS_DIR}/laser_scan_utils/ + - ci_deps/laser_scan_utils/ - key: csm-bionic paths: - - ${CI_BUILDS_DIR}/csm/ + - ci_deps/csm/ except: - master before_script: - *preliminaries_definition - - *build_install_wolf_definition - - *build_install_csm_definition - - *build_install_laserscanutils_definition + - *install_wolf_definition + - *install_csm_definition + - *install_laserscanutils_definition - ldconfig # update links (shared libraries) script: @@ -255,20 +309,20 @@ build_and_test_falko:bionic: cache: - key: wolf-bionic paths: - - ${CI_BUILDS_DIR}/wolf/ + - ci_deps/wolf/ - key: laserscanutils-bionic paths: - - ${CI_BUILDS_DIR}/laser_scan_utils/ + - ci_deps/laser_scan_utils/ - key: falko-bionic paths: - - ${CI_BUILDS_DIR}/falkolib/ + - ci_deps/falkolib/ except: - master before_script: - *preliminaries_definition - - *build_install_wolf_definition - - *build_install_falko_definition - - *build_install_laserscanutils_definition + - *install_wolf_definition + - *install_falko_definition + - *install_laserscanutils_definition - ldconfig # update links (shared libraries) script: @@ -280,24 +334,24 @@ build_and_test_csm_falko:bionic: cache: - key: wolf-bionic paths: - - ${CI_BUILDS_DIR}/wolf/ + - ci_deps/wolf/ - key: laserscanutils-bionic paths: - - ${CI_BUILDS_DIR}/laser_scan_utils/ + - ci_deps/laser_scan_utils/ - key: csm-bionic paths: - - ${CI_BUILDS_DIR}/csm/ + - ci_deps/csm/ - key: falko-bionic paths: - - ${CI_BUILDS_DIR}/falkolib/ + - ci_deps/falkolib/ except: - master before_script: - *preliminaries_definition - - *build_install_wolf_definition - - *build_install_falko_definition - - *build_install_csm_definition - - *build_install_laserscanutils_definition + - *install_wolf_definition + - *install_falko_definition + - *install_csm_definition + - *install_laserscanutils_definition - ldconfig # update links (shared libraries) script: diff --git a/license_header_2021.txt b/license_header_2021.txt new file mode 100644 index 0000000000000000000000000000000000000000..c75a6f243b37109b77d60e16b7caebfc19215aea --- /dev/null +++ b/license_header_2021.txt @@ -0,0 +1,17 @@ +// Copyright (C) 2020,2021 Institut de Robòtica i Informà tica Industrial, CSIC-UPC. +// Authors: Joan Solà Ortega (jsola@iri.upc.edu) +// All rights reserved. +// +// This file is part of WOLF +// WOLF is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>.