Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into feature/from_bytes
Browse files Browse the repository at this point in the history
Tempate authored May 10, 2024
2 parents 8576beb + 80a3c07 commit ab1e7d1
Showing 4 changed files with 328 additions and 257 deletions.
14 changes: 13 additions & 1 deletion .github/actions/project_dependencies/action.yml
Original file line number Diff line number Diff line change
@@ -7,6 +7,18 @@ inputs:
description: Specify runs-on machine to download specific artifact
required: true

custom_version_build:
description: >
Use the custom version build from eProsima-CI.
If set to false, the workflow will run the tests for Fast DDS v2 and v3.
required: true
type: choice
default: 'custom'
options:
- custom
- v2
- v3

cmake_build_type:
description: Specify cmake_build_type option to download specific artifact
required: true
@@ -43,7 +55,7 @@ runs:
- name: Download dependencies artifact
uses: eProsima/eProsima-CI/multiplatform/download_dependency@v0
with:
artifact_name: built_fastdds_${{ inputs.os }}_${{ inputs.cmake_build_type }}${{ inputs.dependencies_artifact_postfix }}
artifact_name: built_fastdds_${{ inputs.custom_version_build }}_${{ inputs.os }}_${{ inputs.cmake_build_type }}${{ inputs.dependencies_artifact_postfix }}
workflow_source: build_fastdds.yml
workflow_source_repository: eProsima/eProsima-CI
target_workspace: ${{ inputs.target_workspace }}
23 changes: 23 additions & 0 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Nightly test workflow for dev-utils
name: nightly

on:
schedule:
- cron: '0 5 * * *'

jobs:

reusable_tests_v2:
name: reusable_tests_v2
uses: eProsima/dev-utils/.github/workflows/reusable-workflow.yml
with:
custom_version_build: 'v2'
dependencies_artifact_postfix: '_nightly'

# Uncomment this block to run the tests for Fast DDS v3 when dev-utils is updated
# reusable_tests_v3:
# name: reusable_tests_v3
# uses: eProsima/dev-utils/.github/workflows/reusable-workflow.yml
# with:
# custom_version_build: 'v3'
# dependencies_artifact_postfix: '_nightly'
274 changes: 274 additions & 0 deletions .github/workflows/reusable-workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,274 @@
# Reusable workflow to run the following jobs:
#
# - multiplatform-tests
# - [ ubuntu-22.04 | ubuntu-20.04 | windows-2019 | windows-2022 ]
# - [ Debug | Release ]
# - execute tests in different versions of ubuntu with different build types
#
# - asan
# - ubuntu-22.04
# - execute tests with ASAN flag
#
# - tsan
# - ubuntu-22.04
# - execute tests with TSAN flag
#
# - clang
# - ubuntu-22.04
# - execute clang-tidy check
#
# - coverage
# - ubuntu-22.04
# - execute test with coverage flag and upload results
#
# - flaky
# - ubuntu-22.04
# - execute flaky tests
#
# - uncrustify
# - ubuntu-22.04
# - test uncrustify
#
# - python-linter
# - ubuntu-22.04
# - test python linter
#

name: reusable-workflow

on:

workflow_call:
inputs:

custom_version_build:
description: >
Use the custom version build from eProsima-CI.
If set to false, the workflow will run the tests for Fast DDS v2 and v3.
required: true
type: string

dependencies_artifact_postfix:
description: 'Postfix name to add to artifact name to download dependencies. This is use to download a specific artifact version from eProsima-CI.'
required: true
default: '_nightly'
type: string

env:
code_packages_names: 'cmake_utils cpp_utils py_utils'
cpp_packages_names: 'cmake_utils cpp_utils'
py_packages_names: 'py_utils'

jobs:


#####################################################################
# TEST

multiplatform-tests:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
cmake_build_type:
- Release
- Debug
os:
- ubuntu-20.04
- ubuntu-22.04
- windows-2019
- windows-2022

steps:

- name: Sync repository
uses: eProsima/eProsima-CI/external/checkout@v0
with:
path: src

- name: Download dependencies and install requirements
uses: ./src/.github/actions/project_dependencies
with:
os: ${{ matrix.os }}
cmake_build_type: ${{ matrix.cmake_build_type }}
custom_version_build: ${{ github.event.inputs.custom_version_build }}
dependencies_artifact_postfix: ${{ github.event.inputs.dependencies_artifact_postfix }}
secret_token: ${{ secrets.GITHUB_TOKEN }}

- name: Compile and run tests
uses: eProsima/eProsima-CI/multiplatform/colcon_build_test@v0
with:
packages_names: ${{ env.code_packages_names }}
cmake_args: -DBUILD_TESTS=ON -DCMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }}
workspace_dependencies: './install'
ctest_args: --label-exclude "xfail"
colcon_meta_file: ./src/.github/workflows/configurations/${{ runner.os }}/colcon.meta


#####################################################################
# ASAN

asan:
runs-on: ubuntu-22.04
steps:

- name: Sync repository
uses: eProsima/eProsima-CI/external/checkout@v0
with:
path: src

- name: Download dependencies and install requirements
uses: ./src/.github/actions/project_dependencies
with:
os: ubuntu-22.04
cmake_build_type: Release
custom_version_build: ${{ github.event.inputs.custom_version_build }}
dependencies_artifact_postfix: ${{ github.event.inputs.dependencies_artifact_postfix }}
secret_token: ${{ secrets.GITHUB_TOKEN }}

- name: Compile and run tests
uses: eProsima/eProsima-CI/multiplatform/asan_build_test@v0
with:
packages_names: ${{ env.cpp_packages_names }}
workspace_dependencies: './install'


#####################################################################
# TSAN

tsan:
# NOTE: there is a known issue in TSAN 20.04 with std::condition_variable::wait_for
# https://github.com/google/sanitizers/issues/1259
# Until this is fixed, we use 20.04 for TSAN work
runs-on: ubuntu-22.04
steps:

- name: Sync repository
uses: eProsima/eProsima-CI/external/checkout@v0
with:
path: src

- name: Download dependencies and install requirements
uses: ./src/.github/actions/project_dependencies
with:
os: ubuntu-22.04
cmake_build_type: Release
custom_version_build: ${{ github.event.inputs.custom_version_build }}
dependencies_artifact_postfix: ${{ github.event.inputs.dependencies_artifact_postfix }}
secret_token: ${{ secrets.GITHUB_TOKEN }}

- name: Compile and run tests
uses: eProsima/eProsima-CI/multiplatform/tsan_build_test@v0
with:
packages_names: ${{ env.cpp_packages_names }}
workspace_dependencies: './install'


#####################################################################
# CLANG

clang:
runs-on: ubuntu-22.04
steps:

- name: Sync repository
uses: eProsima/eProsima-CI/external/checkout@v0
with:
path: src

- name: Download dependencies and install requirements
uses: ./src/.github/actions/project_dependencies
with:
os: ubuntu-22.04
cmake_build_type: Release
custom_version_build: ${{ github.event.inputs.custom_version_build }}
dependencies_artifact_postfix: ${{ github.event.inputs.dependencies_artifact_postfix }}
secret_token: ${{ secrets.GITHUB_TOKEN }}

- name: Compile and run tests
uses: eProsima/eProsima-CI/multiplatform/clang_build_test@v0
with:
packages_names: ${{ env.cpp_packages_names }}
workspace_dependencies: './install'


#####################################################################
# COVERAGE

coverage:
runs-on: ubuntu-22.04
environment:
name: codecov
steps:

- name: Sync repository
uses: eProsima/eProsima-CI/external/checkout@v0
with:
path: src

- name: Download dependencies and install requirements
uses: ./src/.github/actions/project_dependencies
with:
os: ubuntu-22.04
cmake_build_type: Release
custom_version_build: ${{ github.event.inputs.custom_version_build }}
dependencies_artifact_postfix: ${{ github.event.inputs.dependencies_artifact_postfix }}
secret_token: ${{ secrets.GITHUB_TOKEN }}

- name: Compile and run tests
uses: eProsima/eProsima-CI/ubuntu/coverage_build_test_upload@v0
with:
packages_names: ${{ env.cpp_packages_names }}
workspace_dependencies: './install'
codecov_token: ${{ secrets.CODECOV_TOKEN }}
codecov_fix_file_path: ./src/codecov.yml


#####################################################################
# FLAKY

flaky:
runs-on: ubuntu-22.04
steps:

- name: Sync repository
uses: eProsima/eProsima-CI/external/checkout@v0
with:
path: src

- name: Download dependencies and install requirements
uses: ./src/.github/actions/project_dependencies
with:
os: ubuntu-22.04
cmake_build_type: Release
custom_version_build: ${{ github.event.inputs.custom_version_build }}
dependencies_artifact_postfix: ${{ github.event.inputs.dependencies_artifact_postfix }}
secret_token: ${{ secrets.GITHUB_TOKEN }}

- name: Compile and run tests
uses: eProsima/eProsima-CI/multiplatform/colcon_build_test_flaky@v0
with:
packages_names: ${{ env.code_packages_names }}
workspace_dependencies: './install'


#####################################################################
# UNCRUSTIFY

uncrustify:
runs-on: ubuntu-22.04
steps:

- name: Uncrustify
uses: eProsima/eProsima-CI/ubuntu/uncrustify@v0


#####################################################################
# PYTHON LINTER

python-linter:
runs-on: ubuntu-22.04
steps:

- name: Python Linter
uses: eProsima/eProsima-CI/ubuntu/python_linter@v0
274 changes: 18 additions & 256 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,55 +1,21 @@
# Main CI
# This is executed:
# - every PullRequest (new or update)
# - every merge in main
# - every night (05:00)
#
# These jobs that require to install eprosima libraries uses the artifact generated for eprosima-CI nightly
# so they do not have to compile the whole project. This saves huge amount of time.
#
# JOBS:
#
# - multiplatform-tests
# - [ ubuntu-22.04 | ubuntu-20.04 | windows-2019 | windows-2022 ]
# - [ Debug | Release ]
# - execute tests in different versions of ubuntu with different build types
#
# - asan
# - ubuntu-22.04
# - execute tests with ASAN flag
#
# - tsan
# - ubuntu-22.04
# - execute tests with TSAN flag
#
# - clang
# - ubuntu-22.04
# - execute clang-tidy check
#
# - coverage
# - ubuntu-22.04
# - execute test with coverage flag and upload results
#
# - flaky
# - ubuntu-22.04
# - execute flaky tests
#
# - uncrustify
# - ubuntu-22.04
# - test uncrustify
#
# - python-linter
# - ubuntu-22.04
# - test python linter
#

# Tests to run with workflow-dispatch, pull-request and push events
name: test

on:

workflow_dispatch:
inputs:

custom_version_build:
description: >
Select Fast DDS version build from eProsima-CI.
required: true
type: choice
default: 'custom'
options:
- custom
- v2
- v3

dependencies_artifact_postfix:
description: 'Postfix name to add to artifact name to download dependencies. This is use to download a specific artifact version from eProsima-CI.'
required: true
@@ -59,216 +25,12 @@ on:
push:
branches:
- main
schedule:
- cron: '0 5 * * *'

env:
code_packages_names: 'cmake_utils cpp_utils py_utils'
cpp_packages_names: 'cmake_utils cpp_utils'
py_packages_names: 'py_utils'
default_dependencies_artifact_postfix: '_nightly'

jobs:


#####################################################################
# TEST

multiplatform-tests:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
cmake_build_type:
- Release
- Debug
os:
- ubuntu-20.04
- ubuntu-22.04
- windows-2019
- windows-2022

steps:

- name: Sync repository
uses: eProsima/eProsima-CI/external/checkout@v0
with:
path: src

- name: Download dependencies and install requirements
uses: ./src/.github/actions/project_dependencies
with:
os: ${{ matrix.os }}
cmake_build_type: ${{ matrix.cmake_build_type }}
dependencies_artifact_postfix: ${{ github.event.inputs.dependencies_artifact_postfix || env.default_dependencies_artifact_postfix }}
secret_token: ${{ secrets.GITHUB_TOKEN }}

- name: Compile and run tests
uses: eProsima/eProsima-CI/multiplatform/colcon_build_test@v0
with:
packages_names: ${{ env.code_packages_names }}
cmake_args: -DBUILD_TESTS=ON -DCMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }}
workspace_dependencies: './install'
ctest_args: --label-exclude "xfail"
colcon_meta_file: ./src/.github/workflows/configurations/${{ runner.os }}/colcon.meta


#####################################################################
# ASAN

asan:
runs-on: ubuntu-22.04
steps:

- name: Sync repository
uses: eProsima/eProsima-CI/external/checkout@v0
with:
path: src

- name: Download dependencies and install requirements
uses: ./src/.github/actions/project_dependencies
with:
os: ubuntu-22.04
cmake_build_type: Release
dependencies_artifact_postfix: ${{ github.event.inputs.dependencies_artifact_postfix || env.default_dependencies_artifact_postfix }}
secret_token: ${{ secrets.GITHUB_TOKEN }}

- name: Compile and run tests
uses: eProsima/eProsima-CI/multiplatform/asan_build_test@v0
with:
packages_names: ${{ env.cpp_packages_names }}
workspace_dependencies: './install'


#####################################################################
# TSAN

tsan:
runs-on: ubuntu-22.04
steps:

- name: Sync repository
uses: eProsima/eProsima-CI/external/checkout@v0
with:
path: src

- name: Download dependencies and install requirements
uses: ./src/.github/actions/project_dependencies
with:
os: ubuntu-22.04
cmake_build_type: Release
dependencies_artifact_postfix: ${{ github.event.inputs.dependencies_artifact_postfix || env.default_dependencies_artifact_postfix }}
secret_token: ${{ secrets.GITHUB_TOKEN }}

- name: Compile and run tests
uses: eProsima/eProsima-CI/multiplatform/tsan_build_test@v0
with:
packages_names: ${{ env.cpp_packages_names }}
workspace_dependencies: './install'


#####################################################################
# CLANG

clang:
runs-on: ubuntu-22.04
steps:

- name: Sync repository
uses: eProsima/eProsima-CI/external/checkout@v0
with:
path: src

- name: Download dependencies and install requirements
uses: ./src/.github/actions/project_dependencies
with:
os: ubuntu-22.04
cmake_build_type: Release
dependencies_artifact_postfix: ${{ github.event.inputs.dependencies_artifact_postfix || env.default_dependencies_artifact_postfix }}
secret_token: ${{ secrets.GITHUB_TOKEN }}

- name: Compile and run tests
uses: eProsima/eProsima-CI/multiplatform/clang_build_test@v0
with:
packages_names: ${{ env.cpp_packages_names }}
workspace_dependencies: './install'


#####################################################################
# COVERAGE

coverage:
runs-on: ubuntu-22.04
environment:
name: codecov
steps:

- name: Sync repository
uses: eProsima/eProsima-CI/external/checkout@v0
with:
path: src

- name: Download dependencies and install requirements
uses: ./src/.github/actions/project_dependencies
with:
os: ubuntu-22.04
cmake_build_type: Release
dependencies_artifact_postfix: ${{ github.event.inputs.dependencies_artifact_postfix || env.default_dependencies_artifact_postfix }}
secret_token: ${{ secrets.GITHUB_TOKEN }}

- name: Compile and run tests
uses: eProsima/eProsima-CI/ubuntu/coverage_build_test_upload@v0
with:
packages_names: ${{ env.cpp_packages_names }}
workspace_dependencies: './install'
codecov_token: ${{ secrets.CODECOV_TOKEN }}
codecov_fix_file_path: ./src/codecov.yml


#####################################################################
# FLAKY

flaky:
runs-on: ubuntu-22.04
steps:

- name: Sync repository
uses: eProsima/eProsima-CI/external/checkout@v0
with:
path: src

- name: Download dependencies and install requirements
uses: ./src/.github/actions/project_dependencies
with:
os: ubuntu-22.04
cmake_build_type: Release
dependencies_artifact_postfix: ${{ github.event.inputs.dependencies_artifact_postfix || env.default_dependencies_artifact_postfix }}
secret_token: ${{ secrets.GITHUB_TOKEN }}

- name: Compile and run tests
uses: eProsima/eProsima-CI/multiplatform/colcon_build_test_flaky@v0
with:
packages_names: ${{ env.code_packages_names }}
workspace_dependencies: './install'


#####################################################################
# UNCRUSTIFY

uncrustify:
runs-on: ubuntu-22.04
steps:

- name: Uncrustify
uses: eProsima/eProsima-CI/ubuntu/uncrustify@v0


#####################################################################
# PYTHON LINTER

python-linter:
runs-on: ubuntu-22.04
steps:

- name: Python Linter
uses: eProsima/eProsima-CI/ubuntu/python_linter@v0
reusable_tests:
name: reusable_tests
uses: eProsima/dev-utils/.github/workflows/reusable-workflow.yml
with:
custom_version_build: ${{ github.event.inputs.custom_version_build || 'v2' }}
dependencies_artifact_postfix: ${{ github.event.inputs.dependencies_artifact_postfix || '_nightly' }}

0 comments on commit ab1e7d1

Please sign in to comment.