stages: - build-and-test - deploy - post-deploy-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 # Activate Axii. - source /axii/scripts/install_axii.sh - _axii_auto_env_refresh script: - echo "ArmarX Workspace = '$ARMARX_WORKSPACE'" # 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 # 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/armarx-gui:latest-bionic build-and-test-jammy: stage: build-and-test extends: .build-and-test image: git.h2t.iar.kit.edu:5050/sw/armarx/armarx-gui:latest-jammy docker-bionic: stage: deploy needs: ["build-and-test-bionic"] image: name: gcr.io/kaniko-project/executor:v1.9.0-debug entrypoint: [""] script: - /kaniko/executor --context "${CI_PROJECT_DIR}" --dockerfile "${CI_PROJECT_DIR}/docker/bionic" --destination "${CI_REGISTRY_IMAGE}:latest-bionic" rules: - if: $CI_COMMIT_BRANCH == "master" docker-jammy: stage: deploy needs: ["build-and-test-jammy"] image: name: gcr.io/kaniko-project/executor:v1.9.0-debug entrypoint: [""] script: - /kaniko/executor --context "${CI_PROJECT_DIR}" --dockerfile "${CI_PROJECT_DIR}/docker/jammy" --destination "${CI_REGISTRY_IMAGE}:latest-jammy" rules: - if: $CI_COMMIT_BRANCH == "master" .test-docker-image-common: before_script: - source /axii/scripts/install_axii.sh - _axii_auto_env_refresh script: - echo "ArmarX Workspace = '$ARMARX_WORKSPACE'" - printenv - axii workspace list-modules - axii workspace list-modules --deps - axii workspace info - echo "RobotAPI directory = '$RobotAPI_DIR'" - which armarx - which armarx-package - 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 - cd $ArmarXGui_DIR - ctest --output-on-failure . test-docker-image-bionic: stage: post-deploy-test needs: ["docker-bionic"] extends: .test-docker-image-common image: git.h2t.iar.kit.edu:5050/sw/armarx/robot-api:latest-bionic rules: - if: $CI_COMMIT_BRANCH == "master" test-docker-image-jammy: stage: post-deploy-test needs: ["docker-jammy"] extends: .test-docker-image-common image: git.h2t.iar.kit.edu:5050/sw/armarx/robot-api:latest-jammy rules: - if: $CI_COMMIT_BRANCH == "master"