Skip to content
Snippets Groups Projects
.gitlab-ci.yml 3.92 KiB
Newer Older
stages:
  - build-and-test
Rainer Kartmann's avatar
Rainer Kartmann committed
  - deploy
  - downstream
Rainer Kartmann's avatar
Rainer Kartmann committed
.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:
      - .ccache

  before_script:
    # Ccache configuration and introspection.
Rainer Kartmann's avatar
Rainer Kartmann committed
    - apt-get update
    - apt-get install ccache --yes
    - ccache --set-config=cache_dir="$CI_PROJECT_DIR/.ccache"
Rainer Kartmann's avatar
Rainer Kartmann committed
    - ccache --max-size=5G
    - ccache --show-stats

    # 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.
Rainer Kartmann's avatar
Rainer Kartmann committed
    - 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

Rainer Kartmann's avatar
Rainer Kartmann committed
    - export PROJECT_PATH_IN_WORKSPACE="$simox__PATH"

    # Symlink project directory into Axii workspace.
Rainer Kartmann's avatar
Rainer Kartmann committed
    - mkdir -p "$(dirname $PROJECT_PATH_IN_WORKSPACE)"
    - ln -s "$CI_PROJECT_DIR" "$PROJECT_PATH_IN_WORKSPACE"

    # Upgrade.
    - axii workspace system --accept-apt-install
    - axii workspace update --prefer-https
    - _axii_auto_env_refresh

    # Upgrade.
    - axii workspace upgrade -m simox
    - _axii_auto_env_refresh
    - ccache --show-stats

    # Test.
    # ToDo: Add and use `axii ws test -m simox`
    - cd "$PROJECT_PATH_IN_WORKSPACE/build"
Rainer Kartmann's avatar
Rainer Kartmann committed
    - ctest . || true
Rainer Kartmann's avatar
Rainer Kartmann committed
    - ctest --rerun-failed --output-on-failure . || true
Rainer Kartmann's avatar
Rainer Kartmann committed
    - cat Testing/Temporary/LastTest.log || true
Rainer Kartmann's avatar
Rainer Kartmann committed
    # Once again to make the job fail if an error occurs.
    - ctest .
    # Generate documentation.
    - cd "$PROJECT_PATH_IN_WORKSPACE/build"
    - make doc
Rainer Kartmann's avatar
Rainer Kartmann committed
    - du -sh *
    - du -sh doc/*
Rainer Kartmann's avatar
Rainer Kartmann committed

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

  artifacts:
    name: "Simox-Documentation-$CI_COMMIT_REF_NAME"
    paths:
      - build/doc/html/

  rules:
    - if: $CI_COMMIT_BRANCH != "ci"
Rainer Kartmann's avatar
Rainer Kartmann committed

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
  rules:
    - if: $CI_COMMIT_BRANCH != "ci"
Rainer Kartmann's avatar
Rainer Kartmann committed

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 != "ci"
Rainer Kartmann's avatar
Rainer Kartmann committed
armarx-core:
  stage: downstream

Rainer Kartmann's avatar
Rainer Kartmann committed
  variables:
    TODO_ENV_VARIABLE: "This variable will be available to the CI pipeline of ArmarXCore."

  trigger:
    project: sw/armarx/armarx-core
    # This is optional, but we could tell ArmarX which Simox branch to use.
    branch: master  

  rules:
    - if: $CI_COMMIT_BRANCH == "master"


.test-docker-image-common:

  before_script:
    # - source ~/.bashrc
Rainer Kartmann's avatar
Rainer Kartmann committed
    - source /axii/scripts/install_axii.sh

  script:
    - echo "ArmarX Workspace = '$ARMARX_WORKSPACE'"
    - printenv

    # - axii workspace activate workspace  # No effect
    # - echo "ArmarX Workspace = '$ARMARX_WORKSPACE'"
    # - printenv
    # - export ARMARX_WORKSPACE="/workspace"
    # - echo "ArmarX Workspace = '$ARMARX_WORKSPACE'"
    # - printenv

    - axii workspace list-modules
    - axii workspace list-modules --deps
    - axii workspace info

    - which RobotViewer


test-docker-image-ci:
  stage: post-deploy-test
  extends: .test-docker-image-common

  image: git.h2t.iar.kit.edu:5050/sw/simox/simox:latest-bionic

  rules:
    - if: $CI_COMMIT_BRANCH == "ci"