Skip to content
Snippets Groups Projects
Forked from tecnalia_robotics-public / templates
99 commits behind the upstream repository.
README.adoc 352 B

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.