Skip to content

test

test #508

Workflow file for this run

name: test
on:
workflow_dispatch:
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/[email protected]
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/[email protected]
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/[email protected]
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