eProsima-CI

April 15, 2026 · View on GitHub

This is a github CI auxiliary repo that contains common github steps, actions, and workflows shared along multiple eProsima libraries and tools. The main idea is to collect every repeated or generic step of any CI to have a single more maintainable generic point.

Commercial support

Looking for commercial support? Write us to info@eprosima.com

Find more about us at eProsima’s webpage.

Index


User manual

In order to use this repository, the following recommendations are suggested:

  1. Always use a fix version. When using any of these actions, set it with a @v<X> version.
  2. Use multiplatform actions when possible. They automatically will redirect the action to the proper OS.
  3. If planning a long well preserved CI, use @vX.Y versioning, to be sure that CI will not change and break something in the future. However, this may be a problem because it will not be updated with improvements or external versions.
  4. Actions are documented in their own <platform>/<action_name>/action.yml files. Check each file for description and argument definitions.

For more information about versioning handle of this project, check following file.


Out-of-the-box Actions Implemented

  • uncrustify

    • Check the C++ linter of the new files added to the repository.
    • Only on ubuntu.
  • python_linter

    • Check the Python linter of the new files added to the repository.
    • Only on ubuntu.
  • sphinx_docs

    • Build Sphinx documentation, test it and upload results.
    • Only on ubuntu.
    • Only for documentation projects based in cmake_utils.

Actions Implemented

Multiplatform

Ubuntu

macOS

Workflows

There are several workflows implemented that build projects and upload them as artifacts. These are used for other projects to speed up the build process of the dependencies.

Artifacts uploaded

So far, the following workflows are running to upload artifacts:

These are the artifacts that are generated every night with the latest versions of each project:

  • Fast DDS

    • build_fastdds__ubuntu-22.04_Debug_nightly
    • build_fastdds__ubuntu-22.04_Debug_nightly_tsan
    • build_fastdds__ubuntu-22.04_Release_nightly
    • build_fastdds__ubuntu-24.04_Debug_nightly
    • build_fastdds__ubuntu-24.04_Release_nightly
    • build_fastdds__windows-2022_Debug_nightly
    • build_fastdds__windows-2022_Release_nightly
  • dev-utils

    • build_dev_utils__ubuntu-22.04_Debug_nightly
    • build_dev_utils__ubuntu-22.04_Debug_nightly_tsan
    • build_dev_utils__ubuntu-22.04_Release_nightly
    • build_dev_utils__ubuntu-24.04_Debug_nightly
    • build_dev_utils__ubuntu-24.04_Release_nightly
    • build_dev_utils__windows-2022_Debug_nightly
    • build_dev_utils__windows-2022_Release_nightly
  • DDS Pipe

    • build_ddspipe__ubuntu-22.04_Debug_nightly
    • build_ddspipe__ubuntu-22.04_Debug_nightly_tsan
    • build_ddspipe__ubuntu-22.04_Release_nightly
    • build_ddspipe__ubuntu-24.04_Debug_nightly
    • build_ddspipe__ubuntu-24.04_Release_nightly
    • build_ddspipe__windows-2022_Debug_nightly
    • build_ddspipe__windows-2022_Release_nightly

In order to use one of these artifacts, use the following action as a step:

- name: Get fastdds artifact
  uses: eProsima/eProsima-CI/multiplatform/download_dependency@main
  with:
    artifact_name: build_fastdds_ubuntu-20.04_Debug_nightly
    workflow_source: build_fastdds.yml
    workflow_source_repository: eProsima/eProsima-CI
    # Path where to download the installs from the artifact
    target_workspace: ${{ github.workspace }}/install
    # If inside an action, this value must be generated in workflow and passed as argument
    secret_token: ${{ secrets.GITHUB_TOKEN }}
    workflow_conclusion: completed

Generate artifacts manually

The artifacts can be customized so the artifacts generated follow specific configurations. These configurations are set in a .repos and colcon.meta files in a new branch in eProsima-CI. In order to change the dependencies required to build within an artifact, set dependencies.repos with the new repositories to download and build. In order to change CMake options when building the artifact, set files in files in .github/workflows/configurations/metas. Run the manual_build workflow with these arguments:

  • build_configuration_branch: Branch created with .repos and colcon.meta files.
  • artifacts_name_postfix: Postfix of the name of the artifact used to download and link, and also postfix of the name of the generated artifact.

:warning: Do not generate custom artifacts with postfix _nightly, as this is the main name other repos will use.

Custom artifact generation

The workflow manual_build supports to create any artifact giving a .repos and colcon.meta files. In order to run this workflow, create a branch in this repository, set dependencies.repos file with the repositories needed to build the project and set colcon.meta files in .github/workflows/configurations/metas. Then, run the manual_build workflow with these arguments:

  • build_configuration_branch: Branch created with .repos and colcon.meta files.
  • artifacts_name_prefix: Prefix of the name of the artifact to generate.
  • artifacts_name_postfix: Postfix of the name of the artifact to generate.

The result artifacts will be called <artifacts_name_prefix>_<os>_<cmake_build_type><artifacts_name_postfix>.

External Actions

This repository also includes a wrapper around the external actions being used by eProsima CI workflows. Thus, the maintainability and upgrading of these actions is performed in a single step. Find below the external actions listed:

External ActionDescriptionLICENSE
add_labelsAdd labels from an issue or PRApache-2.0 license
action-download-artifactDownload and extract an artifactMIT license
checkoutCheckout repositoryMIT license
codecov-actionUpload coverage report to codecov.ioMIT license
create-pull-requestCreate PRMIT license
get-cmakeInstalls desired versions of CMake and NinjaMit license
install_doxygenMulti-platform action that installs doxygenMit license
install_qtMulti-platform action that installs QtMIT license
mirror-branch-actionMirror branch within the same repositoryApache-2.0 license
custom-mirror-branch-actionIn-house reusable workflow to mirror a branch within the same repository (no external dependencies)Apache-2.0 license
remove_labelsRemove labels from an issue or PRApache-2.0 license
setup-ccache-actionSetup CCache in a workflowMIT license
setup-pythonInstalls a version of Python or PyPy and (by default) adds it to the PATHMIT license
test-reporterDisplay test results directly in GitHubMIT license
upload-artifactUpload build artifactMIT license
wait-on-check-actionWait on certain checkMIT license
test-reporterGenerate test reports in workflow summariesMIT license