build_dev_utils #541
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# This Workflow builds an artifact with dev-utils and Fast DDS installed. | |
# This is used by other workflows in this and other repositories to avoid compiling dependencies every time they are needed. | |
# | |
# DESCRIPTION: | |
# First, this workflow downloads the last successful build of Fast DDS downloaded from build_fastdds workflow artifacts. | |
# This workflow takes a .repos file from "./.github/workflows/configurations/dev_utils/dependencies.repos" (in this same repository) and downloads the repositories included. | |
# Then uses the colcon.meta files in "./.github/workflows/configurations/metas/<os>/colcon.meta" to build projects. | |
# Finally it takes the install directory generated from colcon build and uploads it as an artifact. | |
# The result artifact also contains Fast DDS installed project. | |
# This is done for several OS and cmake built types: | |
# - ubuntu-22.04 | ubuntu-24.04 | windows-2019 | windows-2022 | |
# - Debug | Release | |
# | |
# ARTIFACT RESULT: | |
# The artifact generated is called "build_dev_utils_<os>_<cmake_build_type><postfix>" | |
# - <os> is "ubuntu-22.04", "ubuntu-24.04", "windows-2019", or "windows-2022" | |
# - <cmake_build_type> is "Debug", or "Release" | |
# - <postfix> is "_nightly" for schedule runs every night, or is set manually from user. | |
# | |
# SCHEDULE: | |
# This workflow runs every night at 00:00 using latest version of dev-utils (main). | |
# It waits till Fast DDS workflow has finished. | |
# | |
# MANUAL RUN & WORKFLOW CALL: | |
# Running this workflow manually or from another workflow, the following arguments might be set: | |
# single_version_build: flag to build only the custom version taken from inputs. | |
# If set to false, all versions of Fast DDS (v2 and v3) will be built. | |
# | |
# configuration_branch: set a branch to download colcon.meta from this repository [Default: main] | |
# | |
# artifacts_name_postfix: set the postfix name for the uploading artifact [Default: _manual] | |
# Note: do not use "_nightly" in this argument, or other workflows may be affected | |
# | |
# dev_utils_branch: branch, tag or commit of eProsima/dev-utils repository. | |
# Check available branches in https://github.com/eProsima/dev-utils. | |
# | |
# foonathan_memory_vendor_branch: branch, tag or commit of eProsima/foonathan_memory_vendor repository. | |
# Check available branches in https://github.com/eProsima/foonathan_memory_vendor. | |
# | |
# fastcdr_branch: branch, tag or commit of eProsima/Fast-CDR repository. | |
# Check available branches in https://github.com/eProsima/Fast-CDR. | |
# | |
# fastdds_branch: branch, tag or commit of eProsima/Fast-DDS repository. | |
# Check available branches in https://github.com/eProsima/Fast-DDS. | |
# | |
name: build_dev_utils | |
on: | |
workflow_call: | |
inputs: | |
single_version_build: | |
description: > | |
Flag to build only the custom version taken from inputs. | |
If set to false, all versions of Fast DDS (v2 and v3) will be built. | |
required: true | |
type: boolean | |
default: true | |
configuration_branch: | |
description: > | |
Branch or tag of eProsima-CI repository to get colcon.meta with which the workflow will be executed. | |
required: false | |
type: string | |
default: main | |
artifacts_name_postfix: | |
description: > | |
Addition to artifacts name creation (do not use _nightly postfix when creating artifacts with specific arguments). | |
required: false | |
type: string | |
default: _manual | |
dev_utils_branch: | |
description: > | |
Branch, tag or commit of eProsima/dev-utils repository. | |
Check available branches in https://github.com/eProsima/dev-utils. | |
required: false | |
type: string | |
default: main | |
foonathan_memory_vendor_branch: | |
description: > | |
Branch, tag or commit of eProsima/foonathan_memory_vendor repository. | |
Check available branches in https://github.com/eProsima/foonathan_memory_vendor. | |
required: false | |
type: string | |
default: master | |
fastcdr_branch: | |
description: > | |
Branch, tag or commit of eProsima/Fast-CDR repository. | |
Check available branches in https://github.com/eProsima/Fast-CDR. | |
required: false | |
type: string | |
default: master | |
fastdds_branch: | |
description: > | |
Branch, tag or commit of eProsima/Fast-DDS repository. | |
Check available branches in https://github.com/eProsima/Fast-DDS. | |
required: false | |
type: string | |
default: master | |
workflow_dispatch: | |
inputs: | |
single_version_build: | |
description: > | |
Flag to build only the custom version taken from inputs. | |
If set to false, all versions of Fast DDS (v2 and v3) will be built. | |
required: true | |
type: boolean | |
default: true | |
configuration_branch: | |
description: > | |
Branch or tag of eProsima-CI repository to get colcon.meta with which the workflow will be executed. | |
required: false | |
default: main | |
artifacts_name_postfix: | |
description: > | |
Addition to artifacts name creation (do not use _nightly postfix when creating artifacts with specific arguments). | |
required: false | |
default: _manual | |
dev_utils_branch: | |
description: > | |
Branch, tag or commit of eProsima/dev-utils repository. | |
Check available branches in https://github.com/eProsima/dev-utils. | |
required: false | |
default: main | |
foonathan_memory_vendor_branch: | |
description: > | |
Branch, tag or commit of eProsima/foonathan_memory_vendor repository. | |
Check available branches in https://github.com/eProsima/foonathan_memory_vendor. | |
required: false | |
type: string | |
default: master | |
fastcdr_branch: | |
description: > | |
Branch, tag or commit of eProsima/Fast-CDR repository. | |
Check available branches in https://github.com/eProsima/Fast-CDR. | |
required: false | |
type: string | |
default: master | |
fastdds_branch: | |
description: > | |
Branch, tag or commit of eProsima/Fast-DDS repository. | |
Check available branches in https://github.com/eProsima/Fast-DDS. | |
required: false | |
type: string | |
default: master | |
schedule: | |
# Every night at 00:00 | |
- cron: '0 1 * * *' | |
env: | |
default_configuration_branch: main | |
default_artifact_postfix: _nightly | |
artifact_prefix: build_dev_utils | |
default_dev_utils_branch: main | |
jobs: | |
build_fastdds: | |
name: build_fastdds | |
uses: eProsima/eProsima-CI/.github/workflows/build_fastdds.yml@main | |
with: | |
single_version_build: ${{ inputs.single_version_build || false }} | |
configuration_branch: ${{ inputs.configuration_branch }} | |
artifacts_name_postfix: ${{ inputs.artifacts_name_postfix }} | |
foonathan_memory_vendor_branch: ${{ inputs.foonathan_memory_vendor_branch }} | |
fastcdr_branch: ${{ inputs.fastcdr_branch }} | |
fastdds_branch: ${{ inputs.fastdds_branch }} | |
build_dev_utils_single_version: | |
name: build_dev_utils | |
if: ${{ contains(inputs.single_version_build, 'true') }} | |
needs: build_fastdds | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
cmake_build_type: | |
- Release | |
- Debug | |
os: | |
- ubuntu-22.04 | |
- ubuntu-24.04 | |
- windows-2019 | |
- windows-2022 | |
# Windows env variables | |
env: | |
OPENSSL64_ROOT: "C:/Program Files/OpenSSL-Win64" | |
steps: | |
- name: Sync this repository | |
uses: eProsima/eProsima-CI/external/checkout@main | |
with: | |
path: src/eprosima-CI | |
- name: Install Fast DDS dependencies | |
uses: eProsima/eProsima-CI/multiplatform/install_fastdds_dependencies@main | |
with: | |
cmake_build_type: ${{ matrix.cmake_build_type }} | |
- name: Get Fast DDS artifact | |
uses: eProsima/eProsima-CI/external/download-artifact@main | |
with: | |
name: build_fastdds_custom_${{ matrix.os }}_${{ matrix.cmake_build_type }}${{ inputs.artifacts_name_postfix || env.default_artifact_postfix }} | |
path: install | |
- name: Get colcon.meta and .repos files to build artifact | |
uses: eProsima/eProsima-CI/multiplatform/get_configurations_from_repo@main | |
with: | |
source_repository_branch: ${{ inputs.configuration_branch || env.default_configuration_branch }} | |
colcon_meta_file_path: .github/workflows/configurations/metas/${{ matrix.os }}/colcon.meta | |
repos_file_path: .github/workflows/configurations/dev_utils/dependencies.repos | |
colcon_meta_file_result: ${{ github.workspace }}/colcon.meta | |
repos_file_result: ${{ github.workspace }}/dependencies.repos | |
- name: Fetch dev-utils repositories | |
uses: eProsima/eProsima-CI/multiplatform/fetch_dev_utils_manual@main | |
with: | |
dev_utils_branch: ${{ inputs.dev_utils_branch || env.default_dev_utils_branch }} | |
destination_workspace: ${{ github.workspace }}/src | |
- name: Build workspace | |
uses: eProsima/eProsima-CI/multiplatform/colcon_build@main | |
with: | |
colcon_meta_file: ${{ github.workspace }}/colcon.meta | |
workspace: ${{ github.workspace }} | |
workspace_dependencies: install | |
cmake_build_type: ${{ matrix.cmake_build_type }} | |
- name: Upload binaries | |
uses: eProsima/eProsima-CI/external/upload-artifact@main | |
with: | |
name: ${{ env.artifact_prefix }}_custom_${{ matrix.os }}_${{ matrix.cmake_build_type }}${{ inputs.artifacts_name_postfix || env.default_artifact_postfix }} | |
path: ${{ github.workspace }}/install | |
build_dev_utils: | |
name: build_dev_utils | |
if: ${{ github.event_name == 'schedule' || contains(inputs.single_version_build, 'false') }} | |
needs: build_fastdds | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
fastdds_version: | |
- v2 | |
- v3 | |
cmake_build_type: | |
- Release | |
- Debug | |
os: | |
- ubuntu-22.04 | |
- ubuntu-24.04 | |
- windows-2019 | |
- windows-2022 | |
# Windows env variables | |
env: | |
OPENSSL64_ROOT: "C:/Program Files/OpenSSL-Win64" | |
steps: | |
- name: Sync this repository | |
uses: eProsima/eProsima-CI/external/checkout@main | |
with: | |
path: src/eprosima-CI | |
- name: Install Fast DDS dependencies | |
uses: eProsima/eProsima-CI/multiplatform/install_fastdds_dependencies@main | |
with: | |
cmake_build_type: ${{ matrix.cmake_build_type }} | |
- name: Get Fast DDS artifact | |
uses: eProsima/eProsima-CI/external/download-artifact@main | |
with: | |
name: build_fastdds_${{ matrix.fastdds_version }}_${{ matrix.os }}_${{ matrix.cmake_build_type }}${{ inputs.artifacts_name_postfix || env.default_artifact_postfix }} | |
path: install | |
- name: Get colcon.meta to build artifact | |
uses: eProsima/eProsima-CI/multiplatform/get_configurations_from_repo@main | |
with: | |
source_repository_branch: ${{ inputs.configuration_branch || env.default_configuration_branch }} | |
colcon_meta_file_path: .github/workflows/configurations/metas/${{ matrix.os }}/colcon.meta | |
repos_file_path: .github/workflows/configurations/dev_utils/deps_${{ matrix.fastdds_version }}.repos | |
colcon_meta_file_result: ${{ github.workspace }}/colcon.meta | |
repos_file_result: ${{ github.workspace }}/dependencies.repos | |
- name: Fetch dev-utils repositories with vcs-tool | |
uses: eProsima/eProsima-CI/multiplatform/vcs_import@main | |
with: | |
vcs_repos_file: ${{ github.workspace }}/dependencies.repos | |
destination_workspace: ${{ github.workspace }}/src | |
- name: Build workspace | |
uses: eProsima/eProsima-CI/multiplatform/colcon_build@main | |
with: | |
colcon_meta_file: ${{ github.workspace }}/colcon.meta | |
workspace: ${{ github.workspace }} | |
workspace_dependencies: install | |
cmake_build_type: ${{ matrix.cmake_build_type }} | |
- name: Upload binaries | |
uses: eProsima/eProsima-CI/external/upload-artifact@main | |
with: | |
name: ${{ env.artifact_prefix }}_${{ matrix.fastdds_version }}_${{ matrix.os }}_${{ matrix.cmake_build_type }}${{ inputs.artifacts_name_postfix || env.default_artifact_postfix }} | |
path: ${{ github.workspace }}/install |