diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..73976608226406fb3172844aba6097810a89d584 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,103 @@ + +stages: + - build-and-test + + +.build-and-test: + + cache: + # https://docs.gitlab.com/ee/ci/caching/#share-caches-across-jobs-in-different-branches + key: one-key-to-rule-them-all + paths: + - .apt + - .ccache + + before_script: + # Apt cache configuration. + - rm -rf /var/cache/apt/archives || true + - rm -f /etc/apt/apt.conf.d/docker-clean # Remove docker-clean script to avoid cache deletion. + - mkdir .apt || true + - ln -s "$CI_PROJECT_DIR/.apt" /var/cache/apt/archives + + # Update apt info. + - apt-get update + + # Ccache configuration and introspection. + - apt-get install ccache --yes + - ccache --set-config=cache_dir="$CI_PROJECT_DIR/.ccache" + - ccache --max-size=20G + - ccache --show-stats + + # Ice configuration to run in Docker. + - export ICE_DEFAULT_HOST="127.0.0.1" + - export ICE_RUN_AS_ROOT="true" + + # Activate Axii. + - source /axii/scripts/install_axii.sh + + script: + # Create workspace. + - axii workspace create ~/workspace workspace + - axii workspace activate workspace + - _axii_auto_env_refresh + + # Use workspace configuration from project. + - cp "$CI_PROJECT_DIR/.gitlab/ci/armarx-workspace.json" "$ARMARX_WORKSPACE/armarx-workspace.json" + - cat "$ARMARX_WORKSPACE/armarx-workspace.json" + + - axii workspace env + - _axii_auto_env_refresh + + - echo "Workspace information:" + - axii workspace list-modules + - axii workspace list-modules --deps + - axii workspace info + + - export PROJECT_MODULE="armarx/RobotAPI" + - export PROJECT_PATH_IN_WORKSPACE="$armarx__RobotAPI__PATH" + + # Symlink project directory into Axii workspace. + - mkdir -p "$(dirname $PROJECT_PATH_IN_WORKSPACE)" + - ln -s "$CI_PROJECT_DIR" "$PROJECT_PATH_IN_WORKSPACE" + + # Fix "CMake Error in CMakeLists.txt: Imported target "VirtualRobot" includes non-existent path "/usr/lib/include" + # (caused by at least dmp) + - mkdir -p /usr/lib/include + + # Upgrade. + - axii workspace system --accept-apt-install + - axii workspace update --prefer-https + - axii workspace upgrade -m "$PROJECT_MODULE" + + - ccache --show-stats + + # Try starting Ice. + - armarx switch docker_test --ice-host 127.0.0.1 --ice-port 10000 --ice-default-host 127.0.0.1 --mongo-host 127.0.0.1 --mongo-port 10001 + - armarx profile + - armarx status || true + #- armarx start + # armarx status + #- armarx stop + + # Test. + # ToDo: Add and use `axii ws test -m "$PROJECT_MODULE"` + - cd "$PROJECT_PATH_IN_WORKSPACE/build" + - ctest --output-on-failure --output-junit "$CI_PROJECT_DIR/report.xml" . + + artifacts: + reports: + junit: report.xml + + +build-and-test-bionic: + stage: build-and-test + extends: .build-and-test + + image: git.h2t.iar.kit.edu:5050/sw/armarx/meta/axii:latest-bionic + + +build-and-test-jammy: + stage: build-and-test + extends: .build-and-test + + image: git.h2t.iar.kit.edu:5050/sw/armarx/meta/axii:latest-jammy diff --git a/.gitlab/ci/armarx-workspace.json b/.gitlab/ci/armarx-workspace.json new file mode 100644 index 0000000000000000000000000000000000000000..ae5ce8a95c44efa6def8c0525c11708a114a1429 --- /dev/null +++ b/.gitlab/ci/armarx-workspace.json @@ -0,0 +1,17 @@ +{ + "modules": { + "tools/ccache/default": {}, + "armarx/RobotAPI": {} + }, + "global": { + "prepare": { + "cmake": { + "definitions": { + "CMAKE_BUILD_TYPE": "RelWithDebInfo", + "CMAKE_C_COMPILER_LAUNCHER": "$CCACHE", + "CMAKE_CXX_COMPILER_LAUNCHER": "$CCACHE" + } + } + } + } +} diff --git a/source/RobotAPI/libraries/ArmarXObjects/test/ArmarXObjectsTest.cpp b/source/RobotAPI/libraries/ArmarXObjects/test/ArmarXObjectsTest.cpp index 433fc67ec7890cbb7fede64d2edda22533e46eb8..4a775da39159a8e0a8435f88679368b3cf39a0dc 100644 --- a/source/RobotAPI/libraries/ArmarXObjects/test/ArmarXObjectsTest.cpp +++ b/source/RobotAPI/libraries/ArmarXObjects/test/ArmarXObjectsTest.cpp @@ -24,13 +24,15 @@ #define ARMARX_BOOST_TEST -#include <RobotAPI/Test.h> #include "../ArmarXObjects.h" #include <iostream> -#include <RobotAPI/libraries/ArmarXObjects/aron/ObjectPose.aron.generated.h> +#include <ArmarXCore/core/system/cmake/CMakePackageFinder.h> + +#include <RobotAPI/Test.h> #include <RobotAPI/libraries/ArmarXObjects/ObjectFinder.h> +#include <RobotAPI/libraries/ArmarXObjects/aron/ObjectPose.aron.generated.h> namespace fs = std::filesystem; @@ -38,7 +40,6 @@ namespace fs = std::filesystem; BOOST_AUTO_TEST_SUITE(arondto_ObjectPose_test) - BOOST_AUTO_TEST_CASE(test_ObjectType_copy_assignment) { BOOST_TEST_MESSAGE("Constructor"); @@ -76,17 +77,25 @@ BOOST_AUTO_TEST_CASE(test_ObjectPose_copy_assignment) BOOST_AUTO_TEST_SUITE_END() - BOOST_AUTO_TEST_SUITE(ObjectFinderTest) - BOOST_AUTO_TEST_CASE(test_find) { using namespace armarx; + { + armarx::CMakePackageFinder packageFinder(ObjectFinder::DefaultObjectsPackageName); + if (not packageFinder.packageFound()) + { + // Do not test further. + BOOST_CHECK(true); + return; + } + } + ObjectFinder finder; - bool checkPaths = false; + const bool checkPaths = false; std::vector<ObjectInfo> objects = finder.findAllObjects(checkPaths); BOOST_CHECK_GT(objects.size(), 0); @@ -106,5 +115,4 @@ BOOST_AUTO_TEST_CASE(test_find) } - BOOST_AUTO_TEST_SUITE_END()