Skip to content

test

test #340

Workflow file for this run

# Main CI for DDS Pipe repository
# This is executed:
# - every PullRequest (new or update)
# - every merge in main
# - every night
#
# These jobs that require to install fastrtps library uses the artifact generated for build_dependencies
# so they do not have to compile the whole fastrtps project. This saves huge amount of time.
#
# JOBS:
#
# - uncrustify
# - ubuntu-20.04
# - test uncrustify
#
# - ubuntu-test
# - [ ubuntu-20.04 | ubuntu-22.04 ]
# - [ Debug | Release ]
# - compile ; run tests
#
# - ubuntu-test-sanitizer
# - ubuntu-22.04
# - Debug
# - flags: [ address | thread ]
# - compile with sanitizer flags ; run tests
#
# - windows-build-test
# - [ windows-2019 | windows-2022 ]
# - [ Debug | Release ]
# - compile ; run tests
#
name: test
on:
workflow_dispatch:
pull_request:
push:
branches:
- main
schedule:
- cron: '0 1 * * *'
jobs:
####################################################################################################
####################################################################################################
uncrustify:
runs-on: ubuntu-20.04
steps:
- name: Sync eProsima/DDS-Pipe repository
uses: actions/checkout@v3
with:
path: src/DDS-Pipe
- name: Fetch all branches and tags
run: |
cd src/DDS-Pipe
git fetch --prune --unshallow
- name: Install apt packages
uses: ./src/DDS-Pipe/.github/actions/install-apt-packages
- name: Install Python packages
uses: ./src/DDS-Pipe/.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/DDS-Pipe
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/DDS-Pipe
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/DDS-Pipe
ament_uncrustify \
-c ../../uncrustify.cfg \
--language CPP \
--xunit-file ../../uncrustify_results.xml \
${MODIFIED_FILES}
- name: Upload uncrustify results
uses: actions/upload-artifact@v3
with:
name: uncrustify_results
path: uncrustify_results.xml
####################################################################################################
####################################################################################################
ubuntu-test:
runs-on: ${{ matrix.ubuntu-version }}
strategy:
fail-fast: false
matrix:
cmake-config:
- 'Release'
- 'Debug'
ubuntu-version:
- 'ubuntu-20.04'
- 'ubuntu-22.04'
steps:
- name: Sync eProsima/DDS-Pipe repository
uses: actions/checkout@v2
with:
path: src/DDS-Pipe
- name: Install apt packages
uses: ./src/DDS-Pipe/.github/actions/install-apt-packages
- name: Install GTest
uses: ./src/DDS-Pipe/.github/actions/install-gtest-linux
- name: Install Python packages
uses: ./src/DDS-Pipe/.github/actions/install-python-packages
- name: Get build eProsima dependencies Job Id
run: |
export JOB_ID=$(curl -sL $GITHUB_API_URL/repos/$GITHUB_REPOSITORY/actions/workflows/build_dependencies.yml/runs | \
jq '.workflow_runs[] | select(.status == "completed") | .id' | \
head -n 1)
echo "fastdds_job_id=${JOB_ID}" >> $GITHUB_ENV
- name: Download eProsima dependencies
uses: dawidd6/action-download-artifact@v2
with:
workflow: build_dependencies.yml
path: /home/runner/work/fastdds/install
name: ${{ matrix.ubuntu-version }}_fastdds_install
run_id: ${{ env.fastdds_job_id }}
- 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: Build workspace
run: |
source /home/runner/work/fastdds/install/setup.bash
colcon build \
--event-handlers=console_direct+ \
--cmake-args \
-DBUILD_TESTS=ON \
-DCMAKE_BUILD_TYPE=${{ matrix.cmake-config }} \
-DCMAKE_CXX_FLAGS="-Werror -Wall"
- name: Run tests ddspipe
run: |
source install/setup.bash && \
colcon test \
--packages-select-regex ddspipe \
--event-handlers=console_direct+ \
--return-code-on-test-failure \
--ctest-args \
--label-exclude xfail \
--timeout 60
- name: Upload Logs
uses: actions/upload-artifact@v1
with:
name: colcon-logs-ubuntu
path: log/
if: always()
####################################################################################################
####################################################################################################
ubuntu-test-sanitizer:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
sanitizer-flag:
- 'address'
- 'thread'
steps:
- name: Sync eProsima/DDS-Pipe repository
uses: actions/checkout@v2
with:
path: src/DDS-Pipe
- name: Install apt packages
uses: ./src/DDS-Pipe/.github/actions/install-apt-packages
- name: Install GTest
uses: ./src/DDS-Pipe/.github/actions/install-gtest-linux
- name: Install Python packages
uses: ./src/DDS-Pipe/.github/actions/install-python-packages
- name: Get build eProsima dependencies Job Id
run: |
export JOB_ID=$(curl -sL $GITHUB_API_URL/repos/$GITHUB_REPOSITORY/actions/workflows/build_dependencies.yml/runs | \
jq '.workflow_runs[] | select(.status == "completed") | .id' | \
head -n 1)
echo "fastdds_job_id=${JOB_ID}" >> $GITHUB_ENV
- name: Download eProsima dependencies
uses: dawidd6/action-download-artifact@v2
with:
workflow: build_dependencies.yml
path: /home/runner/work/fastdds/install
name: ubuntu-22.04_fastdds_install
run_id: ${{ env.fastdds_job_id }}
- 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
# By default it is built in release mode
- name: Build workspace
run: |
source /home/runner/work/fastdds/install/setup.bash
colcon build \
--event-handlers=console_direct+ \
--cmake-args -DBUILD_TESTS=ON -DCMAKE_CXX_FLAGS='-Werror -fsanitize=${{ matrix.sanitizer-flag }}'
- name: Run tests ddspipe
run: |
source install/setup.bash && \
colcon test \
--packages-select-regex ddspipe \
--event-handlers=console_direct+ \
--return-code-on-test-failure \
--ctest-args \
--label-exclude "xfail|xasan|xtsan" \
--timeout 60
- name: Upload Logs
uses: actions/upload-artifact@v1
with:
name: colcon-logs-ubuntu
path: log/
if: always()
####################################################################################################
####################################################################################################
windows-build-test:
runs-on: ${{ matrix.windows-version }}
strategy:
fail-fast: false
matrix:
cmake-config:
- 'Release'
- 'Debug'
windows-version:
- 'windows-2019'
- 'windows-2022'
env:
CXXFLAGS: /MP
OPENSSL64_ROOT: "C:/Program Files/OpenSSL-Win64"
steps:
- name: Sync eProsima/DDS-Pipe repository
uses: actions/checkout@v2
with:
path: DDS-Pipe
- name: Install OpenSSL
uses: ./DDS-Pipe/.github/actions/install-openssl-windows
- name: Install GTest
uses: ./DDS-Pipe/.github/actions/install-gtest-windows
with:
cmake_build_type: ${{ matrix.cmake-config }}
- name: Install yaml-cpp
uses: ./DDS-Pipe/.github/actions/install-yamlcpp-windows
with:
cmake_build_type: ${{ matrix.cmake-config }}
- name: Get build eProsima dependencies Job Id
shell: pwsh
run: |
$secret = ConvertTo-SecureString -String "${{ secrets.GITHUB_TOKEN }}" -AsPlainText
$RUNS_URI = '${{ github.api_url }}/repos/${{ github.repository }}/actions/workflows/build_dependencies.yml/runs'
# Check available queries according with github policy
"::group::Rate Limits with github action token"
((Invoke-WebRequest -Authentication OAuth -Token $secret `
-Uri https://api.github.com/users/octocat).Headers.GetEnumerator() |
? Key -like "X-RateLimit*") | Out-Host
"::endgroup::"
((Invoke-WebRequest -Authentication OAuth -Token $secret -Uri $RUNS_URI).Content | ConvertFrom-Json).workflow_runs | ? status -eq 'completed' |
select -first 1 id | % { "fastdds_job_id=" + $_.id } | Out-File $env:GITHUB_ENV -Append
- name: Download eProsima dependencies
uses: dawidd6/action-download-artifact@v2
with:
workflow: build_dependencies.yml
path: ${{ github.workspace }}\..\fastdds\install
name: ${{ matrix.windows-version }}_${{ matrix.cmake-config }}_fastdds_install
run_id: ${{ env.fastdds_job_id }}
- name: Install ddspipe_core
uses: ./DDS-Pipe/.github/actions/install-router-subpackage-windows
with:
cmake_build_type: ${{ matrix.cmake-config }}
subpackage: ddspipe_core
subpackage_dir: ddspipe_core
- name: Run tests ddspipe_core
uses: ./DDS-Pipe/.github/actions/run-test-windows
with:
package_name: ddspipe_core
cmake_build_type: ${{ matrix.cmake-config }}
- name: Install ddspipe_participants
uses: ./DDS-Pipe/.github/actions/install-router-subpackage-windows
with:
cmake_build_type: ${{ matrix.cmake-config }}
subpackage: ddspipe_participants
subpackage_dir: ddspipe_participants
- name: Run tests ddspipe_participants
uses: ./DDS-Pipe/.github/actions/run-test-windows
with:
package_name: ddspipe_participants
cmake_build_type: ${{ matrix.cmake-config }}
- name: Install ddspipe_yaml
uses: ./DDS-Pipe/.github/actions/install-router-subpackage-windows
with:
cmake_build_type: ${{ matrix.cmake-config }}
subpackage: ddspipe_yaml
subpackage_dir: ddspipe_yaml
- name: Run tests ddspipe_yaml
uses: ./DDS-Pipe/.github/actions/run-test-windows
with:
package_name: ddspipe_yaml
cmake_build_type: ${{ matrix.cmake-config }}