test #1187
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
# 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 | |
# | |
# - docs | |
# - ubuntu-22.04 | |
# - execute docs compile and tests | |
# | |
# - uncrustify | |
# - ubuntu-22.04 | |
# - test uncrustify | |
# | |
# - python-linter | |
# - ubuntu-22.04 | |
# - test python linter | |
# | |
# TODO: when merge CI in eprosima-CI repository, the jparisu fork must change for eProsima in actions. | |
# | |
# TODO: Add Windows CI | |
# | |
name: test | |
on: | |
workflow_dispatch: | |
inputs: | |
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' | |
pull_request: | |
push: | |
branches: | |
- main | |
schedule: | |
- cron: '0 5 * * *' | |
env: | |
# TODO: controller is not tested as it has no tests | |
code_packages_names: 'ddsrecorder_participants ddsrecorder_yaml ddsrecorder_tool ddsreplayer_tool' | |
docs_packages_names: 'ddsrecorder_docs' | |
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 | |
colcon_test_args: '--executor=sequential' # TODO remove when available in eProsima-CI | |
##################################################################### | |
# 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: Debug | |
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.code_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: Debug | |
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.code_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: Debug | |
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.code_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.code_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' | |
##################################################################### | |
# DOCUMENTATION TEST | |
docs: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Build and test documentation | |
uses: eProsima/eProsima-CI/ubuntu/sphinx_docs@main | |
with: | |
checkout_path: "${{ github.workspace }}/src/ddsrecordreplay" | |
path_to_requirements: "${{ github.workspace }}/src/ddsrecordreplay/docs/requirements.txt" | |
docs_subpackage_name: ${{ env.docs_packages_names }} | |
secret_token: ${{ secrets.GITHUB_TOKEN }} | |
##################################################################### | |
# 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 |