diff --git a/.github/actions/install-apt-packages/action.yml b/.github/actions/install-apt-packages/action.yml deleted file mode 100644 index 9c5c3fe..0000000 --- a/.github/actions/install-apt-packages/action.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: 'install-apt-packages' -description: 'Install necessary apt packages' -runs: - using: "composite" - steps: - - id: install-apt-packages - run: | - sudo apt update && sudo apt -y install \ - clang-tidy \ - curl \ - doxygen \ - graphviz \ - grep \ - imagemagick \ - libasio-dev \ - libtinyxml2-dev \ - libyaml-cpp-dev \ - lcov \ - python3 \ - python3-pip \ - python3-sphinxcontrib.spelling \ - python3-venv \ - software-properties-common \ - wget - shell: bash diff --git a/.github/actions/install-gtest-linux/action.yml b/.github/actions/install-gtest-linux/action.yml deleted file mode 100644 index 3c3257d..0000000 --- a/.github/actions/install-gtest-linux/action.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: Install GTest -description: Install and setup GTest for linking and building test application in Linux -runs: - using: composite - steps: - - run: sudo apt install libgtest-dev libgmock-dev - shell: bash - - run: (cd /usr/src/gtest && sudo `which cmake` .) - shell: bash - - run: sudo make -j $(nproc) -C /usr/src/gtest - shell: bash - - run: sudo ln -s /usr/src/gtest/libgtest.a /usr/lib/libgtest.a - shell: bash - - run: sudo ln -s /usr/src/gtest/libgtest_main.a /usr/lib/libgtest_main.a - shell: bash - - run: (cd /usr/src/googletest/googlemock && sudo `which cmake` .) - shell: bash - - run: sudo make -j $(nproc) -C /usr/src/googletest/googlemock - shell: bash - - run: sudo ln -s /usr/src/googletest/googlemock/libgmock.a /usr/lib/libgmock.a - shell: bash diff --git a/.github/actions/install-openssl-windows/action.yml b/.github/actions/install-openssl-windows/action.yml deleted file mode 100644 index 964caec..0000000 --- a/.github/actions/install-openssl-windows/action.yml +++ /dev/null @@ -1,10 +0,0 @@ -name: Install OpenSSL -description: Install and setup OpenSSL for linking and building in Windows -runs: - using: composite - steps: - - run: > - choco install openssl -yr --no-progress; - @(ls -Path C:\Windows\System32\* -Include libssl-*.dll; ls -Path C:\Windows\SysWOW64\* -Include libssl-*.dll) - | rm -ErrorAction SilentlyContinue - shell: pwsh diff --git a/.github/actions/install-python-packages/action.yml b/.github/actions/install-python-packages/action.yml deleted file mode 100644 index e385229..0000000 --- a/.github/actions/install-python-packages/action.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: 'install-python-packages' -description: 'Install necessary python packages' -runs: - using: "composite" - steps: - - id: install-python-packages - run: | - sudo pip3 install -U \ - sphinx==3.0.3 \ - doc8==0.8.0 \ - sphinx_rtd_theme==0.4.3 \ - sphinxcontrib.spelling==5.0.0 \ - sphinxcontrib-imagehelper==1.1.1 \ - colcon-common-extensions \ - colcon-mixin \ - vcstool \ - GitPython \ - setuptools \ - gcovr==5.0 \ - pyyaml \ - jsonschema - shell: bash diff --git a/.github/actions/run-test-ubuntu/action.yml b/.github/actions/run-test-ubuntu/action.yml deleted file mode 100644 index 373c84d..0000000 --- a/.github/actions/run-test-ubuntu/action.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Run colcon test in ubuntu -description: Run colcon test in ubuntu for a specific package -inputs: - package_name: - description: 'Specifies the package to run the tests' - required: true -runs: - using: composite - steps: - - run: | - source install/setup.bash - colcon test \ - --packages-select ${{ inputs.package_name }} \ - --event-handlers=console_direct+ \ - --return-code-on-test-failure \ - --ctest-args \ - --label-exclude xfail \ - --timeout 60 - shell: bash diff --git a/.github/workflows/test_colcon.meta b/.github/workflows/configurations/Linux/colcon.meta similarity index 100% rename from .github/workflows/test_colcon.meta rename to .github/workflows/configurations/Linux/colcon.meta diff --git a/.github/workflows/test_documentation.meta b/.github/workflows/configurations/Linux/test_documentation.meta similarity index 100% rename from .github/workflows/test_documentation.meta rename to .github/workflows/configurations/Linux/test_documentation.meta diff --git a/.github/workflows/configurations/Windows/colcon.meta b/.github/workflows/configurations/Windows/colcon.meta new file mode 100644 index 0000000..89483be --- /dev/null +++ b/.github/workflows/configurations/Windows/colcon.meta @@ -0,0 +1,65 @@ +{ + "names": + { + "foonathan_memory": + { + "cmake-args": + [ + "-DCMAKE_CXX_FLAGS='/WX /EHsc'", + "-Ax64", + "-T host=x64", + "-DBUILD_SHARED_LIBS=OFF", + "-DFOONATHAN_MEMORY_BUILD_TOOLS=ON", + "-DCMAKE_POSITION_INDEPENDENT_CODE=ON", + "-DFOONATHAN_MEMORY_BUILD_TESTS=OFF" + ] + }, + + "fastcdr": + { + "cmake-args": + [ + "-DCMAKE_CXX_FLAGS='/WX /EHsc'", + "-Ax64", + "-T host=x64" + ] + }, + + "fastdds": + { + "cmake-args": + [ + "-DCMAKE_CXX_FLAGS='/WX /EHsc'", + "-Ax64", + "-T host=x64", + "-DFASTDDS_STATISTICS=ON", + "-DTHIRDPARTY=ON", + "-DSECURITY=ON", + "-DCOMPILE_EXAMPLES=OFF", + "-DEPROSIMA_BUILD_TESTS=OFF", + "-DINTERNAL_DEBUG=ON" + ] + }, + + "fastdds_visualizer_plugin": + { + "cmake-args": + [ + "-DCMAKE_CXX_FLAGS='/WX /EHsc'", + "-Ax64", + "-T host=x64", + "-DQT_PATH=$GITHUB_WORKSPACE/qt_installation/Qt/5.15.2" + ] + }, + + "plotjuggler": + { + "cmake-args": + [ + "-DCMAKE_CXX_FLAGS='/WX /EHsc'", + "-Ax64", + "-T host=x64" + ] + } + } +} diff --git a/.github/workflows/requirements.repos b/.github/workflows/requirements.repos deleted file mode 100644 index cadcbbf..0000000 --- a/.github/workflows/requirements.repos +++ /dev/null @@ -1,17 +0,0 @@ -repositories: - foonathan_memory_vendor: - type: git - url: https://github.com/eProsima/foonathan_memory_vendor.git - version: master - fastcdr: - type: git - url: https://github.com/eProsima/Fast-CDR.git - version: master - fastdds: - type: git - url: https://github.com/eProsima/Fast-DDS.git - version: master - plotjuggler: - type: git - url: https://github.com/facontidavide/PlotJuggler.git - version: main diff --git a/.github/workflows/reusable-workflow.yml b/.github/workflows/reusable-workflow.yml new file mode 100644 index 0000000..534b718 --- /dev/null +++ b/.github/workflows/reusable-workflow.yml @@ -0,0 +1,175 @@ +name: test + +on: + workflow_call: + inputs: + custom_version_build: + description: > + Version of Fast DDS build from eProsima-CI. + required: true + type: string + ref: + description: > + The branch or tag name to checkout. + required: true + type: string + default: 'main' + +jobs: + +##################################################################### +# TEST + + multiplatform-build: + runs-on: ${{ matrix.os.version }} + strategy: + fail-fast: false + matrix: + cmake_build_type: + - Release + - Debug + os: + - version: ubuntu-22.04 + aarch: 'gcc_64' + - version: ubuntu-24.04 + aarch: 'gcc_64' + - version: windows-2019 + aarch: 'win64_msvc2019_64' + - version: windows-2022 + aarch: 'win64_msvc2019_64' + + steps: + + - name: Sync repository + uses: eProsima/eProsima-CI/external/checkout@v0 + with: + path: src/fastdds_visualizer_plugin + ref: ${{ inputs.ref }} + + - name: Install Fast DDS dependencies + uses: eProsima/eProsima-CI/multiplatform/install_fastdds_dependencies@v0 + with: + cmake_build_type: ${{ matrix.cmake_build_type }} + + - name: Fetch Fast DDS Visualizer Plugin repositories + uses: eProsima/eProsima-CI/multiplatform/vcs_import@v0 + with: + vcs_repos_file: ${{ github.workspace }}//src/fastdds_visualizer_plugin/fastdds_visualizer_plugin.repos + destination_workspace: ${{ github.workspace }}/src + skip_existing: 'true' + + - name: Install apt packages + if: runner.os == 'Linux' + uses: eProsima/eProsima-CI/ubuntu/install_apt_packages@v0 + with: + packages: clang-tidy curl doxygen graphviz grep imagemagick libasio-dev libtinyxml2-dev libyaml-cpp-dev lcov python3 python3-pip python3-sphinxcontrib.spelling python3-venv software-properties-common wget + + - name: Install Ubuntu Python packages + if: ${{ runner.os == 'Linux' }} + uses: eProsima/eProsima-CI/multiplatform/install_python_packages@v0 + with: + packages: sphinx==7.3.6 doc8==0.10.1 sphinx_rtd_theme==2.0.0 sphinxcontrib.spelling==8.0.0 sphinxcontrib-imagehelper==1.1.1 colcon-common-extensions colcon-mixin vcstool GitPython setuptools gcovr==5.0 pyyaml jsonschema + + - name: Install Windows Python packages + if: ${{ runner.os == 'Windows' }} + uses: eProsima/eProsima-CI/multiplatform/install_python_packages@v0 + with: + packages: sphinx doc8 sphinx_rtd_theme sphinxcontrib.spelling sphinxcontrib-imagehelper colcon-common-extensions colcon-mixin vcstool GitPython setuptools gcovr==5.0 pyyaml jsonschema + + - name: Install Qt + uses: eProsima/eProsima-CI/external/install_qt@v0 + with: + dir: '${{ github.workspace }}/qt_installation/' + modules: 'qtcharts' + arch: ${{ matrix.os.aarch }} + setup-python: 'false' + + - name: Install OpenSSL in windows + if: runner.os == 'Windows' + shell: pwsh + run: > + choco install openssl -yr --no-progress; + @(ls -Path C:\Windows\System32\* -Include libssl-*.dll; ls -Path C:\Windows\SysWOW64\* -Include libssl-*.dll) + | rm -ErrorAction SilentlyContinue + + - name: Compile and run tests + uses: eProsima/eProsima-CI/multiplatform/colcon_build_test@v0 + env: + QT_QPA_PLATFORM: 'offscreen' + with: + packages_names: fastdds_visualizer_plugin + cmake_build_type: ${{ matrix.cmake_build_type }} + cmake_args: '-DTHIRDPARTY=ON -DBUILD_DOCUMENTATION=OFF -DBUILD_DOCUMENTATION_TESTS=OFF' + colcon_meta_file: ${{ github.workspace }}/src/fastdds_monitor/.github/workflows/configurations/${{ runner.os }}/colcon.meta + workspace: ${{ github.workspace }} + test_report_artifact: 'fastdds_visualizer_plugin_${{ matrix.os.version }}_${{ matrix.cmake_build_type }}' + + +##################################################################### +# DOCUMENTATION + +##################################################################### +# TEST + + documentation: + runs-on: ubuntu-24.04 + steps: + - name: Sync repository + uses: eProsima/eProsima-CI/external/checkout@v0 + with: + path: src/fastdds_visualizer_plugin + ref: ${{ inputs.ref }} + + - name: Install Fast DDS dependencies + uses: eProsima/eProsima-CI/multiplatform/install_fastdds_dependencies@v0 + with: + cmake_build_type: 'Release' + + - name: Fetch Fast DDS Visualizer Plugin repositories + uses: eProsima/eProsima-CI/multiplatform/vcs_import@v0 + with: + vcs_repos_file: ${{ github.workspace }}//src/fastdds_visualizer_plugin/fastdds_visualizer_plugin.repos + destination_workspace: ${{ github.workspace }}/src + skip_existing: 'true' + + - name: Install apt packages + uses: eProsima/eProsima-CI/ubuntu/install_apt_packages@v0 + with: + packages: clang-tidy curl doxygen graphviz grep imagemagick libasio-dev libtinyxml2-dev libyaml-cpp-dev lcov python3 python3-pip python3-sphinxcontrib.spelling python3-venv software-properties-common wget + + - name: Install Python packages + uses: eProsima/eProsima-CI/multiplatform/install_python_packages@v0 + with: + packages: sphinx==7.3.6 doc8==0.10.1 sphinx_rtd_theme==2.0.0 sphinxcontrib.spelling==8.0.0 sphinxcontrib-imagehelper==1.1.1 colcon-common-extensions colcon-mixin vcstool GitPython setuptools gcovr==5.0 pyyaml jsonschema + + - name: Install Qt + uses: eProsima/eProsima-CI/external/install_qt@v0 + with: + dir: '${{ github.workspace }}/qt_installation/' + modules: 'qtcharts' + setup-python: 'false' + + - name: Compile and run tests + uses: eProsima/eProsima-CI/multiplatform/colcon_build_test@v0 + with: + packages_names: fastdds_visualizer_plugin + cmake_build_type: 'Release' + colcon_meta_file: ${{ github.workspace }}/src/fastdds_monitor/.github/workflows/configurations/Linux/test_documentation.meta + workspace: ${{ github.workspace }} + test_report_artifact: 'fastdds_visualizer_plugin_documentation' + +##################################################################### +# UNCRUSTIFY + + uncrustify: + runs-on: ubuntu-24.04 + steps: + + - name: Sync repository + uses: eProsima/eProsima-CI/external/checkout@v0 + with: + path: src + ref: ${{ inputs.ref }} + + - name: Uncrustify + uses: eProsima/eProsima-CI/ubuntu/uncrustify@v0 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6260dab..134882b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,300 +1,33 @@ +# Tests to run with workflow-dispatch, pull-request and push events name: test on: workflow_dispatch: + 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: choice + default: 'custom' + options: + - custom + - v2 + - v3 + pull_request: push: branches: - main - schedule: - - cron: '0 1 * * *' jobs: - # This job is used to test the correct compilation and test execution of the project. - # It download, install and compile every dependency as in a colcon workspace to simulate a real user scenario. - # TODO: once the tests are implemented, add them to this job. - ubuntu-build-test: - runs-on: ${{ matrix.ubuntu-distro }} - strategy: - fail-fast: false - matrix: - cmake-config: - - 'Release' - - 'Debug' - ubuntu-distro: - - ubuntu-20.04 - - ubuntu-22.04 - - steps: - - name: Sync eProsima/fastdds-visualizer-plugin repository - uses: actions/checkout@v2 - with: - path: src/fastdds-visualizer-plugin - - - name: Install apt packages - uses: ./src/fastdds-visualizer-plugin/.github/actions/install-apt-packages - - - name: Install GTest - uses: ./src/fastdds-visualizer-plugin/.github/actions/install-gtest-linux - - - name: Install Python packages - uses: ./src/fastdds-visualizer-plugin/.github/actions/install-python-packages - - - name: Fetch required repositories - run: | - vcs import src < src/fastdds-visualizer-plugin/.github/workflows/requirements.repos - - - name: Update colcon mixin - run: | - colcon mixin add default \ - https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml - colcon mixin update default - continue-on-error: true - - - name: Install Qt - uses: jurplel/install-qt-action@v2.13.0 - with: - version: '5.15.2' - dir: '${{ github.workspace }}/qt_installation/' - modules: 'qtcharts' - - - name: Build workspace - run: | - cat src/fastdds-visualizer-plugin/.github/workflows/test_colcon.meta - colcon build \ - --event-handlers=console_direct+ \ - --metas src/fastdds-visualizer-plugin/.github/workflows/test_colcon.meta \ - --mixin coverage-gcc asan-gcc - - - name: Run tests - uses: ./src/fastdds-visualizer-plugin/.github/actions/run-test-ubuntu - with: - package_name: fastdds-visualizer-plugin - if: always() - - - name: Upload Logs - uses: actions/upload-artifact@v4 - with: - name: colcon-logs-ubuntu - path: log/ - if: always() - - # This job compiles the documentation of the package and upload the docs generated. - # NOTE: it does compile the whole project as the docs is a cmake subproject and cannot be accessed by colcon. - ubuntu-build-test-docs: - - runs-on: ubuntu-20.04 - - steps: - - name: Sync eProsima/fastdds-visualizer-plugin repository - uses: actions/checkout@v2 - with: - path: src/fastdds-visualizer-plugin - - - name: Install apt packages - uses: ./src/fastdds-visualizer-plugin/.github/actions/install-apt-packages - - - name: Install GTest - uses: ./src/fastdds-visualizer-plugin/.github/actions/install-gtest-linux - - - name: Install Python packages - uses: ./src/fastdds-visualizer-plugin/.github/actions/install-python-packages - - - name: Fetch required repositories - run: | - vcs import src < src/fastdds-visualizer-plugin/.github/workflows/requirements.repos - - - name: Update colcon mixin - run: | - colcon mixin add default \ - https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml - colcon mixin update default - continue-on-error: true - - - name: Install Qt - uses: jurplel/install-qt-action@v2.13.0 - with: - version: '5.15.2' - dir: '${{ github.workspace }}/qt_installation/' - modules: 'qtcharts' - - - name: Build workspace - run: | - cat src/fastdds-visualizer-plugin/.github/workflows/test_documentation.meta - colcon build \ - --event-handlers=console_direct+ \ - --metas src/fastdds-visualizer-plugin/.github/workflows/test_documentation.meta \ - --mixin coverage-gcc asan-gcc - - - name: Run tests - uses: ./src/fastdds-visualizer-plugin/.github/actions/run-test-ubuntu - with: - package_name: fastdds_visualizer_plugin - if: always() - - - name: Upload documentation - uses: actions/upload-artifact@v4 - with: - name: Documentation HTML - path: install/fastdds_visualizer_plugin/docs/fastdds_visualizer_plugin_docs/sphinx/html/ - - - name: Upload Logs - uses: actions/upload-artifact@v4 - with: - name: colcon-logs-ubuntu - path: log/ - if: always() - - # This job tests the compilation of the project in a windows environment. - windows-build-test: - runs-on: ${{ matrix.windows-version }} - strategy: - fail-fast: false - matrix: - cmake-config: - - 'Release' - windows-version: - - 'windows-2019' - - 'windows-latest' - env: - CXXFLAGS: /MP - OPENSSL64_ROOT: "C:/Program Files/OpenSSL-Win64" - - steps: - - uses: actions/checkout@v2 - with: - path: fastdds_visualizer_plugin - - - name: Install OpenSSL - uses: ./fastdds_visualizer_plugin/.github/actions/install-openssl-windows - - - name: Install Qt - uses: jurplel/install-qt-action@v2.13.0 - with: - version: '5.15.2' - arch: 'win64_msvc2019_64' - dir: '${{ github.workspace }}/qt_installation/' - modules: 'qtcharts' - - - name: Install foonatham memory - shell: pwsh - run: > - git clone --recurse-submodules --branch v0.6-2 https://github.com/foonathan/memory.git; - cmake -DBUILD_SHARED_LIBS=OFF -DFOONATHAN_MEMORY_BUILD_TOOLS=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON ` - -DFOONATHAN_MEMORY_BUILD_TESTS=OFF -Ax64 -T host=x64 -B build\memory memory; - cmake --build build\memory --config ${{ matrix.cmake-config }} --target install - - - name: install Fast-CDR - shell: pwsh - run: > - git clone https://github.com/eProsima/Fast-CDR.git; - cmake -Ax64 -T host=x64 -B build\fastcdr Fast-CDR; - cmake --build build\fastcdr --config ${{ matrix.cmake-config }} --target install - - - name: Install Fast-DDS - shell: pwsh - run: > - git clone https://github.com/eProsima/Fast-DDS.git; - cmake -DTHIRDPARTY=ON -DSECURITY=ON -DCOMPILE_EXAMPLES=OFF -DEPROSIMA_BUILD_TESTS=OFF ` - -DINTERNAL_DEBUG=ON -Ax64 -T host=x64 -B build\fastdds Fast-DDS; - cmake --build build\fastdds --config ${{ matrix.cmake-config }} --target install - - - name: Install Plotjuggler - shell: pwsh - run: > - git clone https://github.com/facontidavide/PlotJuggler.git; - cmake -Ax64 -T host=x64 -B build\plotjuggler PlotJuggler; - cmake --build build\plotjuggler --config ${{ matrix.cmake-config }} --target install - - # TODO remove after debug - - name: Check installation paths - shell: pwsh - run: > - Tree /f - - - name: Install Fast DDS Visualizer Plugin - shell: pwsh - run: > - cmake -DCMAKE_PREFIX_PATH='C:\Program Files;${{ github.workspace }}\install' ` - -DCMAKE_CXX_FLAGS="/WX /EHsc" -B build\fastdds_visualizer_plugin ` - -A x64 -T host=x64 fastdds_visualizer_plugin; - cmake --build build\fastdds_visualizer_plugin --config ${{ matrix.cmake-config }} --target install - - - # This job is used to test the format and linter of the new code added to repository - # following the standard of eProsima - uncrustify: - runs-on: ubuntu-latest - steps: - - name: Sync eProsima/fastdds-visualizer-plugin repository - uses: actions/checkout@v2 - with: - path: src/fastdds-visualizer-plugin - - - name: Fetch all branches and tags - run: | - cd src/fastdds-visualizer-plugin - git fetch --prune --unshallow - - - name: Install apt packages - uses: ./src/fastdds-visualizer-plugin/.github/actions/install-apt-packages - - - name: Install Python packages - uses: ./src/fastdds-visualizer-plugin/.github/actions/install-python-packages - - - name: Install uncrustify - run: | - git clone https://github.com/uncrustify/uncrustify.git \ - --branch uncrustify-0.71.0 \ - --single-branch uncrustify - mkdir -p uncrustify/build - cd uncrustify/build - cmake .. - sudo cmake --build . --target install - cd ../.. - sudo rm -rf uncrustify - - # (TODO) Change to main branch when PR is merged - - name: Clone ament_lint - run: | - git clone --branch feature/fix-language-set https://github.com/jparisu/ament_lint.git src/ament_lint - - - name: Build ament_uncrustify - run: colcon build --packages-up-to ament_uncrustify - - - name: Fetch uncrustify config file - run: | - curl \ - -l https://raw.githubusercontent.com/eProsima/cpp-style/master/uncrustify.cfg \ - -o uncrustify.cfg - - - name: Get difference - run: | - cd src/fastdds-visualizer-plugin - echo "MODIFIED_FILES=$(git diff --name-only origin/${GITHUB_BASE_REF} origin/${GITHUB_HEAD_REF} | grep -e '\.h' -e '\.hpp' -e '\.cpp' -e '\.ipp' | tr '\n' ' ')" >> $GITHUB_ENV - - - name: Check difference - run: | - cd src/fastdds-visualizer-plugin - if [[ -z "${MODIFIED_FILES}" ]] - then - touch empty.hpp - echo "MODIFIED_FILES=empty.hpp" >> $GITHUB_ENV - fi - - - name: Check style - run: | - source install/local_setup.bash - cd src/fastdds-visualizer-plugin - ament_uncrustify \ - -c ../../uncrustify.cfg \ - --language CPP \ - --xunit-file ../../uncrustify_results.xml \ - ${MODIFIED_FILES} - - - name: Upload uncrustify results - uses: actions/upload-artifact@v4 - with: - name: uncrustify_results - path: uncrustify_results.xml + reusable_tests: + name: reusable_tests + uses: ./.github/workflows/reusable-workflow.yml + with: + custom_version_build: ${{ inputs.custom_version_build || 'v3' }} + ref: ${{ github.ref }} + secrets: inherit