Packages that can not be built using bloom-generate.
The pipeline for these is different: the docker build executes a script from each repository (.ci/build_package.sh) that is supposed to build the deb package. This procedure is different for each repository, so it is implemented within each package.
Specialities: PX4 is not compatible with bloom-generate, so the ROS package is build by catkin and the build artifacts are extracted from a catkin workspace
Packages are either MRS-developed or are in some way dependent on packages from this pipeline (e.g., on mrs_lib or mrs_msgs)
.deb packages are collected and commited to the PPA repository
rosdep.yml is commited to the PPA
delete builder images older than 7 days
loads the Docker builder image from Github's Docker registry
clones the repository
[optional] install git and gitman submodules
Runs the Docker builder image:
2. adds the passing rosdep.yaml from the artifacts
3. installs dependencies via rosdep
4. determines build order of ROS packages within the repository
5. for each ROS package:
1. determines if the package needs to be built (if the commit changed or if the based image changed or if its dependency was compiled (is in compiled.txt))
2. generates build using bloom-generate for each ROS package
3. builds .deb package
4. installs the .deb to satisfy dependencies later
5. adds the package to the passing rosdep.yaml
6. if compiled, ads the package name into compiled.txt
installs the created .deb fiiles into the into the builder image and squashes the image
Pushes the updated Docker buiilder image into the Github's docker registry
outputs the following into the /tmp/artifacts folder for the later jobs
the new .deb packages
the passing rosdep.yml
the passing copiled.txt
Build job
loads the Docker builder image from Github's Docker registry
accesses the repository from the commit
[optional] install git and gitman submodules
Runs the Docker builder image:
installs dependencies via rosdep
determines build order of ROS packages within the repository
for each ROS package:
generates build using bloom-generate for each ROS package
builds .deb package
installs the .deb to satisfy dependencies later
outputs the following into the /tmp/artifacts folder for the later jobs
the new .deb packages
Collect the artifacts
.deb packages are collected and commited to the PPA repository
single_package_pipeline.png
Clean build images
delete builder images older than 7 days
Test job
loads the Docker builder image from Github's Docker registry
accesses the repository from the commit
[optional] install git and gitman submodules
Runs the Docker builder image:
installs dependencies via rosdep
builds a workspace
runs ROS tests
Clean build images
delete builder images older than 7 days
single_test_pipeline.png
Base docker image
contains ros-noetic-desktop-full
prebuiilt by hand
versioned by date
Docker builder priming
Adds MRS PPA depending on the "variant" of the build (unstable, stable, testing)
installation of neccesary build tools
calling apt update
saved to Github's registry
New commit pushed to master
Generic Github action link for the build is triggered