test #704
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 | |
# | |
# - uncrustify | |
# - ubuntu-22.04 | |
# - test uncrustify | |
# | |
# - python-linter | |
# - ubuntu-22.04 | |
# - test python linter | |
# | |
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: | |
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: | |
# 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-20.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-20.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 |