Skip to content
Snippets Groups Projects
Select Git revision
  • master default
  • include-tests
  • remove-yaml-quotes
  • configurable-ci-setup-lookup-path
  • dev-image-test-bak
  • dev-images
  • tmp/deploy-image-build
  • fast-ci
  • modular-templates
9 results

README.adoc

Blame
  • Forked from tecnalia_robotics-public / templates
    116 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.