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 everyci_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:
-
scripts/pre-deploy-cleanup.bash is run in the
industrial_ci
container before commiting to an image -
deploy/Dockerfile is used to perform some additional cleanup and install deploy/ros_entrypoint.bash as entrypoint script on top of the
industrial_ci
image