Skip to content
Snippets Groups Projects
Select Git revision
  • master default
  • 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
  • 17-add-asciidoctor-syntax-check-to-ci-tests
20 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

    Templates for GitLab Continuous Integration are provided in the folder ci-templates. These can be included from any repo by using include:project:

    include:
      - project: tecnalia_robotics-public/gitlab_templates
        file: ci-templates/core.yml

    Core Pipeline

    The Core pipeline, defined in ci-templates/core.yml, has the following structure:

    • Stage: build

      • Check python syntax

      • .industrial_ci template (see the industrial_ci repo), which can be used to define jobs that build ROS packages

        • Needs the ROS_DISTRO variable to be defined

        • If the package has .rosinstall dependencies, they can be installed using the variable UPSTREAM_WORKSPACE

        • Uses flexbotics-base-devel:${ROS_DISTRO} as a starting image

        • Runs scripts/ci_run_entry_points.sh in the AFTER_SETUP_TARGET_WORKSPACE stage, which in turn finds and runs every ci_entry_script.bash script found in the target repo.

    • Stage: deploy

      • .ddeploy template (see the ddeploy repo), which:

        • Is run automatically for tags, but can also be run manually on normal commits

        • Calls ddeploy to generate the docker image

        • Renames the image created by ddeploy with different tags and pushes them to the registry.

          • Tag ${COMMIT_SHA} (hash of commit)

          • Tag ${CI_COMMIT_REF_SLUG} (branch or tag name)

          • Tag latest only on the default branch

    • Stage: .post

      • Check bash/sh script syntax

      • Check Markdown and AsciiDoc syntax

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

      • Check that C++ files follow this clang-format

    Manual Jobs

    Using the templates defined by the core pipeline, one can easily define jobs to build the packages in the repo.

    include:
      - project: tecnalia_robotics-public/gitlab_templates
        file: ci-templates/core.yml
    
    industrial_ci_kinetic:
      extends: .industrial_ci
      variables:
        ROS_DISTRO: kinetic
        UPSTREAM_WORKSPACE: .rosinstall

    More examples can be found in ci-templates/examples.

    Auto Rules

    In the ci-templates/auto-rules folder, automatic pipelines are defined that will try to detect the ROS distro from the branch name and create jobs. 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, some templates are provided that already set this variable. If your repo needs to uses .rosinstall, you can use the templates in the ci-templates/auto-rules/with-rosinstall folder.

    The auto rules also allow for using variables to explicitely activate each job:

    include:
      - project: tecnalia_robotics-public/gitlab_templates
        file: ci-templates/auto-rules/no-default.yml
    
    variables:
      BUILD_KINETIC: 1
      BUILD_MELODIC: 1
      BUILD_NOETIC: 1

    If a ddeploy.yaml file exists, the auto-rules will add a job extending the .ddeploy template defined

    LFS

    By default, lfs files are not downloaded. If you need to add LFS, include the ci-templates/lfs-pull.yml along with anything else:

    include:
      - project: tecnalia_robotics-public/gitlab_templates
        file:
          - ci-templates/auto-rules/kinetic-default.yml
          - ci-templates/lfs-pull.yml

    Custom rosdep definitions

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