-
Notifications
You must be signed in to change notification settings - Fork 783
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: EduPonz <[email protected]>
- Loading branch information
Showing
1 changed file
with
144 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,144 @@ | ||
name: Fast-DDS Ubuntu CI reusable workflow | ||
|
||
on: | ||
workflow_call: | ||
inputs: | ||
os-image: | ||
description: 'The OS image for the workflow' | ||
required: true | ||
type: string | ||
label: | ||
description: 'ID associated to the workflow' | ||
required: true | ||
type: string | ||
colcon-args: | ||
description: 'Extra arguments for colcon cli' | ||
required: false | ||
type: string | ||
cmake-args: | ||
description: 'Extra arguments for cmake cli' | ||
required: false | ||
type: string | ||
ctest-args: | ||
description: 'Extra arguments for ctest cli' | ||
required: false | ||
type: string | ||
fastdds-branch: | ||
description: 'Branch or tag of Fast DDS repository (https://github.com/eProsima/Fast-DDS)' | ||
required: true | ||
type: string | ||
|
||
defaults: | ||
run: | ||
shell: bash | ||
|
||
jobs: | ||
reusable-ubuntu-ci: | ||
runs-on: ${{ inputs.os-image }} | ||
if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-ci') }} | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
cmake-build-type: | ||
- 'RelWithDebInfo' | ||
steps: | ||
- name: Sync eProsima/Fast-DDS repository | ||
uses: eProsima/eProsima-CI/external/checkout@v0 | ||
with: | ||
path: src/fastrtps | ||
ref: ${{ inputs.fastdds-branch }} | ||
|
||
- name: Get minimum supported version of CMake | ||
uses: lukka/get-cmake@latest | ||
with: | ||
cmakeVersion: '3.16.3' | ||
|
||
- name: Install apt dependencies | ||
uses: eProsima/eProsima-CI/ubuntu/install_apt_packages@v0 | ||
with: | ||
packages: libasio-dev libtinyxml2-dev libssl-dev | ||
update: false | ||
upgrade: false | ||
|
||
- name: Install colcon | ||
uses: eProsima/eProsima-CI/ubuntu/install_colcon@v0 | ||
|
||
- name: Install Python dependencies | ||
uses: eProsima/eProsima-CI/multiplatform/install_python_packages@v0 | ||
with: | ||
packages: vcstool xmlschema | ||
upgrade: false | ||
|
||
- name: Setup CCache | ||
uses: eProsima/eProsima-CI/external/setup-ccache-action@v0 | ||
|
||
# TODO(eduponz): Update known hosts file for DNS resolver testing. NOTE: The runner cannot modify /etc/hosts. | ||
# TODO(eduponz): Set up libp11 and SoftHSM. NOTE: using SoftHSM requires adding the runner to a group, | ||
# which entails logout/login or rebooting the machine. This is not feasible in a CI environment. | ||
|
||
- name: Prepare colcon workspace | ||
id: colcon_ws_setup | ||
run: | | ||
# Nightly job | ||
if [[ "${{ inputs.label }}" == *"nightly"* ]] | ||
then | ||
DEPENDS_REPOS_PATH="./src/fastrtps/.github/workflows/config/nightly_${{ inputs.fastdds-branch }}.repos" | ||
if [ ! -f ${DEPENDS_REPOS_PATH} ] | ||
then | ||
DEPENDS_REPOS_PATH="./src/fastrtps/.github/workflows/config/nightly_master.repos" | ||
fi | ||
META_PATH="./src/fastrtps/.github/workflows/config/nightly.meta" | ||
# Either PR or manual | ||
else | ||
DEPENDS_REPOS_PATH="./src/fastrtps/.github/workflows/config/default_ci_${{ inputs.fastdds-branch }}.repos" | ||
if [ ! -f ${DEPENDS_REPOS_PATH} ] | ||
then | ||
DEPENDS_REPOS_PATH="./src/fastrtps/.github/workflows/config/default_ci_master.repos" | ||
fi | ||
META_PATH="./src/fastrtps/.github/workflows/config/default_ci.meta" | ||
fi | ||
echo "Selected repos files: ${DEPENDS_REPOS_PATH}" | ||
cat ${DEPENDS_REPOS_PATH} | ||
echo "Selected metas files: ${META_PATH}" | ||
cp ${META_PATH} ci.meta | ||
cat ci.meta | ||
# Create source dir and download the sources | ||
vcs import src --input ${DEPENDS_REPOS_PATH} --skip-existing | ||
- name: Colcon build | ||
continue-on-error: false | ||
uses: eProsima/eProsima-CI/multiplatform/colcon_build@v0 | ||
with: | ||
colcon_meta_file: ${{ github.workspace }}/ci.meta | ||
colcon_build_args: ${{ inputs.colcon-args }} | ||
cmake_args: ${{ inputs.cmake-args }} | ||
cmake_args_default: -DCMAKE_CXX_FLAGS="-Werror -Wall" | ||
cmake_build_type: ${{ matrix.cmake-build-type }} | ||
workspace: ${{ github.workspace }} | ||
|
||
- name: Colcon test | ||
id: test | ||
if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-test') }} | ||
uses: eProsima/eProsima-CI/multiplatform/colcon_test@v0 | ||
with: | ||
colcon_test_args: ${{ inputs.colcon-args }} | ||
colcon_test_args_default: --event-handlers=console_direct+ | ||
ctest_args: ${{ inputs.ctest-args }} | ||
ctest_args_default: --repeat until-pass:3 --timeout 300 --label-exclude "xfail" | ||
packages_names: fastrtps | ||
workspace: ${{ github.workspace }} | ||
test_report_artifact: ${{ format('test_report_{0}_{1}_{2}', inputs.label, github.job, join(matrix.*, '_')) }} | ||
|
||
- name: Test summary | ||
uses: eProsima/eProsima-CI/multiplatform/junit_summary@v0 | ||
if: ${{ !cancelled() && !contains(github.event.pull_request.labels.*.name, 'no-test') }} | ||
with: | ||
junit_reports_dir: "${{ steps.test.outputs.ctest_results_path }}" | ||
print_summary: 'True' | ||
show_failed: 'True' | ||
show_disabled: 'False' | ||
show_skipped: 'False' |