Skip to content
Snippets Groups Projects
Select Git revision
  • fbb78f07e2ea6430acb6f6f7ee0977a50e138bfd
  • master default
  • rtde
  • tmp-gpg-key-workaround-2
  • tmp-gpg-key-workaround
  • 68-git-lfs-error-in-ddeploy-job
  • split-build-and-test
  • 66-jazzy-support
  • 62-deploy-jobs-do-not-pull-files-from-lfs-manual-lfs-pull
  • 62-deploy-jobs-do-not-pull-files-from-lfs-custom-docker-image
  • py3-without-industrial-ci-test
  • 58-add-yolo-pip-package-support
  • 55-collision-between-test-jobs-due-to-dds-autodiscovery-ros2
  • 52-ddeploy-job-failing-when-enforcing-labels-alt-quick-dind-test
  • 48-python3_syntax
  • 46-default-docker-image-name-too-long
  • 45-double-pipeline-triggered-if-merge-request-has-melodic-branch-name
  • 40-repo-is-ros-testing
  • test-badges
  • test-lfs-concept
  • add-packages
21 results

gitlab_templates

  • Clone with SSH
  • Clone with HTTPS
  • GitLab Templates

    This repository contains miscellaneous resources that need to be accessible without authentication.

    GitLab CI templates

    Two templates with default CI pipeline configurations are provided, for any repo to make use of:

    • .gitlab-industrial-ci-no-rosinstall.yml

    • .gitlab-industrial-ci-with-rosinstall.yml

    ROS distribution selection

    These pipelines will try to detect the ROS distro from the branch name. For example, if the branch starts with noetic- it will build for noetic. If the branch doesn’t start with any ROS distro, it will build the default distro, which can be specified with the variable DEFAULT_DISTRO. For convenience and backwards compatibility, some templates are provided that already set this variable:

    • .gitlab-industrial-ci-kinetic-no-rosinstall.yml

    • .gitlab-industrial-ci-melodic-no-rosinstall.yml

    • .gitlab-industrial-ci-noetic-no-rosinstall.yml

    • And the same with the with-rosinstall files.

    Multiple ROS distributions

    If a repo wants to compile using multiple distributions, one can specify them by setting the BUILD variables:

    include: 'https://git.code.tecnalia.com/tecnalia_robotics-public/gitlab_templates/raw/master/.gitlab-industrial-ci-with-rosinstall.yml'
    
    variables:
        BUILD_KINETIC: 1
        BUILD_MELODIC: 1
        BUILD_NOETIC: 1

    Pipeline

    All files follow the same pipeline, consisting of the following stages and jobs:

    • Stage: build

      • Check python syntax

      • Run industrial_ci

        • Uses the ros distro defined above

        • Uses flexbotics-base-devel as a starting image

        • Runs scripts/ci_run_entry_points.sh in the BEFORE_SCRIPT stage, which in turn finds and runs every ci_entry_script.bash script found in the source tree (target repo + repos from .rosinstall)

      • Only when tags are pushed:

        • Run some cleanup in the industrial_ci context (e.g. delete sources)

        • Commit image used by industrial_ci

        • Build deployment image on top of it and push it to our registry

    • Stage: .post (jobs in this stage are allowed to fail)

      • Check bash/sh script syntax

      • Check Markdown syntax

      • Check files have no trailing whitespace and are UTF-8 encoded

    It is important to note that both images set the variable GIT_LFS_SKIP_SMUDGE, which means that when the repositories are cloned/fetched, the files hosted using Git LFS will not be downloaded. An example on how to explicitely fetch the files from LFS can be found in the common_config repository.

    Custom rosdep definitions

    Custom rosdep definitions for the packages hosted in our internal debian repository are declared in rosdistro/rosdep_tecnalia.yaml.

    Deployment image build resources

    Resources required for building the deployment docker images are also hosted in this repository. This basically boils down to: