diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 73976608226406fb3172844aba6097810a89d584..0cb6e600c738cb498050b31f5b54d5ac5827190d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,7 @@ - stages: - build-and-test + - deploy + - post-deploy-test .build-and-test: @@ -28,18 +29,12 @@ stages: - 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 + - _axii_auto_env_refresh script: - # Create workspace. - - axii workspace create ~/workspace workspace - - axii workspace activate workspace - - _axii_auto_env_refresh + - echo "ArmarX Workspace = '$ARMARX_WORKSPACE'" # Use workspace configuration from project. - cp "$CI_PROJECT_DIR/.gitlab/ci/armarx-workspace.json" "$ARMARX_WORKSPACE/armarx-workspace.json" @@ -71,14 +66,6 @@ stages: - 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" @@ -93,11 +80,91 @@ 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 + 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/meta/axii:latest-jammy + 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" diff --git a/docker/armarx-workspace.json b/docker/armarx-workspace.json new file mode 100644 index 0000000000000000000000000000000000000000..7052317cebc5fc6d5def5789b2da698583a252f4 --- /dev/null +++ b/docker/armarx-workspace.json @@ -0,0 +1,14 @@ +{ + "modules": { + "armarx/RobotAPI": {} + }, + "global": { + "prepare": { + "cmake": { + "definitions": { + "CMAKE_BUILD_TYPE": "RelWithDebInfo" + } + } + } + } +} diff --git a/docker/bionic b/docker/bionic new file mode 100644 index 0000000000000000000000000000000000000000..66e01cea105fa3c1f84f0592df96f7fecd93d40f --- /dev/null +++ b/docker/bionic @@ -0,0 +1,24 @@ +FROM git.h2t.iar.kit.edu:5050/sw/armarx/armarx-gui:latest-bionic + +# Setup environment. +SHELL ["/bin/bash", "-c"] + +# Setup apt environment. +RUN apt-get -qq update + +# Setup repository in Docker. +WORKDIR $ARMARX_WORKSPACE/armarx/RobotAPI +COPY --chmod=755 . . + +# Use workspace config. +COPY docker/armarx-workspace.json $ARMARX_WORKSPACE/armarx-workspace.json + +# Fix "CMake Error in CMakeLists.txt: Imported target "VirtualRobot" includes non-existent path "/usr/lib/include" +# (caused by at least dmp) +RUN mkdir -p /usr/lib/include + +# Run the upgrade. +RUN axii workspace system --accept-apt-install +# ToDo: Prevent this from updating the target itself. +RUN axii workspace update --prefer-https +RUN axii workspace upgrade diff --git a/docker/jammy b/docker/jammy new file mode 100644 index 0000000000000000000000000000000000000000..1eef819fef3a422d72cc063ff21054897d313ab0 --- /dev/null +++ b/docker/jammy @@ -0,0 +1,20 @@ +FROM git.h2t.iar.kit.edu:5050/sw/armarx/armarx-gui:latest-jammy + +# Setup environment. +SHELL ["/bin/bash", "-c"] + +# Setup apt environment. +RUN apt-get -qq update + +# Setup repository in Docker. +WORKDIR $ARMARX_WORKSPACE/armarx/RobotAPI +COPY --chmod=755 . . + +# Use workspace config. +COPY docker/armarx-workspace.json $ARMARX_WORKSPACE/armarx-workspace.json + +# Run the upgrade. +RUN axii workspace system --accept-apt-install +# ToDo: Prevent this from updating the target itself. +RUN axii workspace update --prefer-https +RUN axii workspace upgrade