Skip to content
Snippets Groups Projects
Forked from tecnalia_robotics-public / templates
103 commits behind the upstream repository.
Jon Azpiazu's avatar
Jon Azpiazu authored
30d73bef
History

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_NAME} (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.