Skip to content

CI Configuration Overview

Henning Wiedemann edited this page Sep 4, 2023 · 1 revision

Phobos-CI is a mighty tool to maintain several various representation versions of one robot, while keeping them in sync and tested. Phobos-CI has currently only been tested with GitLab-CI. Therefore this documentation only applies for this use case. However, the usage with other CIs should work accordingly. The here proposed CI works in an autoproj workspace.

Using the Phobos-CI you can assemble a robot representation from parts and the create different derivations of robot representations.

[TOC]

Repository icons and their meaning

When integrating a Phobos-CI a lot of repositories in a subgroup are necessary. It makes sense to make the different repositories easily distinguishable. This can be done both by a name-prefix and an icon. Phobos provides the following icons, but feel free to create your own that suit you the best:

  • input_icon For repositories that contain input data and do NOT trigger a pipeline run.
  • triggering_input_icon For repositories that contain input data and do trigger a pipeline run.
  • triggering_config_icon For the model definition/config repository (triggers a pipeline run).
  • input_icon For repositories that contain pipeline scripts/data (like this repo, package_sets, ...).
  • input_icon For repositories that contain the result model generated by the CI.

Directory structure

The structure must look like this:

$CI_ROOT_DIRECTORY
└─── $INPUT_MODEL_REPO1
└─── $INPUT_MODEL_REPO2
└─── ... (Several input repositories)
└─── $PIPELINE_DEFINITION_REPO
└─── $CENTRAL_MESHES_DRIECTORY
│    └─── $STL_MESHES_REPO
│    └─── $DAE_MESHES_REPO
│    └─── $OBJ_MESHES_REPO
│    └─── $BOBJ_MESHES_REPO
│    └─── $MARS_OBJ_MESHES_REPO
└─── ... (The target model repositories) e.g.:
└─── "robot-model" (an output repository)
│    └───smurf/
│    └───urdf/
│    └───submodels/
│    └───meshes/stl/ (SUBMODULE)
│    └───...
└─── ... (for each model version an output repository)
└─── temp !!! This directory will be created and deleted by the CI.
     └─── temp_robot-model contains data used for processing and testing the new robot-model
     └─── robot-model contains the new version to replace the robot-model directory above during the deploy job
          └─── smurf/
          └─── urdf/
          └─── submodels/
          └─── meshes/stl/ (SYM-LINK)
          └─── ... further directories, e.g. 'submechanisms' etc.

The pipeline will be triggered by changes in the $PIPELINE_DEFINITION_REPO. If you make changes to any input model repository, you have to trigger the build manually.

As the meshes might be used by more than one model these have own repositories which are included in the models using git-submodules.

For the meshes git-lfs is supported to use it, it is necessary to have the name of the meshes repository beginning with "lfs".

Input Model Repositories

These repo contains the models you obtain e.g. from a CAD and then are used as input models in the Model Definition files.

Pipeline Definition Repository

This repository contains the definition of the pipeline and the models to create. The manifest.xml of this repo has to have all repos for the results listed as dependency. The model definition repo should be listed in the manifest.xml of this repo to have all the models available in the docker for faster processing on the commit. Further info:

Clone this wiki locally