test #391
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 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 }} |