From 3177cf94107f8393de1ec9fa31fd2887e931c966 Mon Sep 17 00:00:00 2001 From: Eduardo Ponz Segrelles Date: Wed, 10 Apr 2024 07:11:18 +0200 Subject: [PATCH 1/6] Refactor Github CI sanitizer related jobs (#4662) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Refs #20542: Add Fast DDS Sanitizer worflow with support for asan fastdds Signed-off-by: eduponz * Refs #20542: Add asan_discovery_server_test job Signed-off-by: eduponz * Refs #20542: Add tsan_fastdds_test job Signed-off-by: eduponz * Refs #20542: Remove colcon_meta input as max inputs for workflow_dispath is 10 Signed-off-by: eduponz * Refs #20542: Create a reusable workflow and a CI one for PRs or manual Signed-off-by: eduponz * Refs #20542: Add nightly sanitizer CI for all supported branches Signed-off-by: eduponz * Refs #20542: Change extension to .yml Signed-off-by: eduponz * Refs #20542: Remove old workflows Signed-off-by: eduponz * Refs #20542: Run sanitizers CI on PR review request Signed-off-by: eduponz * Refs #20542: Exclude xfail tests in discovery server test run Signed-off-by: eduponz * Refs #20542: Install all python packages needed for asan_fastdds_test reporting Signed-off-by: eduponz * Refs #20542: Apply Jesús' suggestions Signed-off-by: eduponz --------- Signed-off-by: eduponz (cherry picked from commit ac0e737a98ae54e29e74f17a34ae4032121061be) # Conflicts: # .github/workflows/address-sanitizers.yaml # .github/workflows/config/asan_colcon.meta # .github/workflows/thread-sanitizer.yaml --- .github/workflows/config/asan_colcon.meta | 4 +- .github/workflows/nightly-sanitizers-ci.yml | 77 +++ .github/workflows/reusable-sanitizers-ci.yml | 464 +++++++++++++++++++ .github/workflows/sanitizers-ci.yml | 77 +++ 4 files changed, 621 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/nightly-sanitizers-ci.yml create mode 100644 .github/workflows/reusable-sanitizers-ci.yml create mode 100644 .github/workflows/sanitizers-ci.yml diff --git a/.github/workflows/config/asan_colcon.meta b/.github/workflows/config/asan_colcon.meta index 2b6710ec7a9..e45f2f2cf30 100644 --- a/.github/workflows/config/asan_colcon.meta +++ b/.github/workflows/config/asan_colcon.meta @@ -1,6 +1,7 @@ names: fastrtps: cmake-args: +<<<<<<< HEAD - "-DCMAKE_BUILD_TYPE=Debug" - "-DEPROSIMA_BUILD_TESTS=ON" - "-DGTEST_INDIVIDUAL=ON" @@ -8,6 +9,8 @@ names: - "-DFASTRTPS_API_TESTS=ON" - "-DFASTDDS_PIM_API_TESTS=ON" - "-DPERFORMANCE_TESTS=ON" +======= +>>>>>>> ac0e737a9 (Refactor Github CI sanitizer related jobs (#4662)) - "-DNO_TLS=OFF" - "-DSECURITY=ON" - "-DFASTDDS_STATISTICS=ON" @@ -15,7 +18,6 @@ names: - "-DCMAKE_CXX_FLAGS='-Werror'" discovery-server: cmake-args: - - "-DCMAKE_BUILD_TYPE=Debug" - "-DSANITIZER=Address" googletest-distribution: cmake-args: diff --git a/.github/workflows/nightly-sanitizers-ci.yml b/.github/workflows/nightly-sanitizers-ci.yml new file mode 100644 index 00000000000..1ae72bb441f --- /dev/null +++ b/.github/workflows/nightly-sanitizers-ci.yml @@ -0,0 +1,77 @@ +name: Fast DDS Sanitizers CI + +on: + workflow_dispatch: + schedule: + - cron: '0 1 * * *' + +jobs: + nightly-sanitizers-ci-master: + uses: ./.github/workflows/reusable-sanitizers-ci.yml + with: + label: 'nightly-sec-sanitizers-ci-master' + run_asan_fastdds: true + run_asan_discovery_server: true + run_tsan_fastdds: true + colcon_build_args: '' + colcon_test_args: '' + cmake_args: '' + ctest_args: '' + fastdds_ref: 'master' + discovery_server_ref: 'master' + + nightly-sanitizers-ci-2_13_x: + uses: ./.github/workflows/reusable-sanitizers-ci.yml + with: + label: 'nightly-sec-sanitizers-ci-2.13.x' + run_asan_fastdds: true + run_asan_discovery_server: true + run_tsan_fastdds: true + colcon_build_args: '' + colcon_test_args: '' + cmake_args: '' + ctest_args: '' + fastdds_ref: '2.13.x' + discovery_server_ref: 'v1.2.2' + + nightly-sanitizers-ci-2_10_x: + uses: ./.github/workflows/reusable-sanitizers-ci.yml + with: + label: 'nightly-sec-sanitizers-ci-2.10.x' + run_asan_fastdds: true + run_asan_discovery_server: true + run_tsan_fastdds: true + colcon_build_args: '' + colcon_test_args: '' + cmake_args: '' + ctest_args: '' + fastdds_ref: '2.10.x' + discovery_server_ref: 'v1.2.1' + + nightly-sanitizers-ci-2_6_x: + uses: ./.github/workflows/reusable-sanitizers-ci.yml + with: + label: 'nightly-sec-sanitizers-ci-2.6.x' + run_asan_fastdds: true + run_asan_discovery_server: true + run_tsan_fastdds: true + colcon_build_args: '' + colcon_test_args: '' + cmake_args: '' + ctest_args: '' + fastdds_ref: '2.6.x' + discovery_server_ref: 'v1.2.1' + + nightly-sanitizers-ci-3_0_x-devel: + uses: ./.github/workflows/reusable-sanitizers-ci.yml + with: + label: 'nightly-sec-sanitizers-ci-3.0.x-devel' + run_asan_fastdds: true + run_asan_discovery_server: true + run_tsan_fastdds: true + colcon_build_args: '' + colcon_test_args: '' + cmake_args: '' + ctest_args: '' + fastdds_ref: '3.0.x-devel' + discovery_server_ref: '3.0.x-devel' diff --git a/.github/workflows/reusable-sanitizers-ci.yml b/.github/workflows/reusable-sanitizers-ci.yml new file mode 100644 index 00000000000..a08587bf322 --- /dev/null +++ b/.github/workflows/reusable-sanitizers-ci.yml @@ -0,0 +1,464 @@ +name: Fast DDS Sanitizers reusable workflow + +on: + workflow_call: + inputs: + label: + description: 'ID associated to the workflow' + required: true + type: string + run_asan_fastdds: + description: 'Run Addess Sanitizer job for Fast DDS' + required: false + type: boolean + run_asan_discovery_server: + description: 'Run Addess Sanitizer job for Discovery Server' + required: false + type: boolean + run_tsan_fastdds: + description: 'Run Thread Sanitizer job for Fast DDS' + required: false + type: boolean + colcon_build_args: + description: 'Optional colcon build arguments' + required: false + type: string + colcon_test_args: + description: 'Optional colcon test arguments' + required: false + type: string + cmake_args: + description: 'Optional CMake Compilation Flags' + required: false + type: string + ctest_args: + description: 'Optional CTest Testing Flags' + required: false + type: string + fastdds_ref: + description: 'Branch or tag of Fast DDS repository (https://github.com/eProsima/Fast-DDS)' + required: true + type: string + discovery_server_ref: + description: > + Branch or tag of Discovery Server repository (https://github.com/eProsima/Discovery-Server) + Required only if the Discovery Server job is requested + required: false + type: string + +defaults: + run: + shell: bash + +jobs: + asan_fastdds_build: + if: ${{ ( + !contains(github.event.pull_request.labels.*.name, 'skip-ci') && + !contains(github.event.pull_request.labels.*.name, 'no-test') && + !contains(github.event.pull_request.labels.*.name, 'conflicts') && + (inputs.run_asan_fastdds == true) + ) }} + runs-on: ubuntu-22.04 + steps: + - name: Add ci-pending label if PR + if: ${{ github.event_name == 'pull_request' }} + uses: eProsima/eProsima-CI/external/add_labels@v0 + with: + labels: ci-pending + number: ${{ github.event.number }} + repo: eProsima/Fast-DDS + + - name: Sync eProsima/Fast-DDS repository + uses: eProsima/eProsima-CI/external/checkout@v0 + with: + path: src/fastrtps + ref: ${{ inputs.fastdds_ref }} + + - name: Get minimum supported version of CMake + uses: eProsima/eProsima-CI/external/get-cmake@v0 + with: + cmakeVersion: '3.22.6' + + - name: Install apt packages + uses: eProsima/eProsima-CI/ubuntu/install_apt_packages@v0 + with: + packages: curl grep libasio-dev libtinyxml2-dev python3 python3-pip software-properties-common wget + + - name: Install colcon + uses: eProsima/eProsima-CI/ubuntu/install_colcon@v0 + + - name: Install Python dependencies + uses: eProsima/eProsima-CI/ubuntu/install_python_packages@v0 + with: + packages: vcstool xmlschema + + - name: Setup CCache + uses: eProsima/eProsima-CI/external/setup-ccache-action@v0 + + - name: Fetch Fast DDS dependencies + uses: eProsima/eProsima-CI/multiplatform/vcs_import@v0 + with: + vcs_repos_file: ${{ github.workspace }}/src/fastrtps/fastrtps.repos + destination_workspace: src + skip_existing: 'true' + + - name: Fetch Fast DDS CI dependencies + uses: eProsima/eProsima-CI/multiplatform/vcs_import@v0 + with: + vcs_repos_file: ${{ github.workspace }}/src/fastrtps/.github/workflows/config/asan.repos + destination_workspace: src + skip_existing: 'true' + + - name: Show .meta file + id: show_meta + run: | + cat ${{ github.workspace }}/src/fastrtps/.github/workflows/config/asan_colcon.meta + + - name: Colcon build + continue-on-error: false + uses: eProsima/eProsima-CI/multiplatform/colcon_build@v0 + with: + colcon_meta_file: ${{ github.workspace }}/src/fastrtps/.github/workflows/config/asan_colcon.meta + colcon_build_args: ${{ inputs.colcon_build_args }} + cmake_args: ${{ inputs.cmake_args }} + cmake_args_default: '' + cmake_build_type: 'Debug' + workspace: ${{ github.workspace }} + workspace_dependencies: '' + + - name: Upload build artifacts + uses: eProsima/eProsima-CI/external/upload-artifact@v0 + with: + name: build_artifacts_fastdds_asan_${{ inputs.label }} + path: ${{ github.workspace }} + + asan_fastdds_test: + needs: asan_fastdds_build + runs-on: ubuntu-22.04 + steps: + - name: Download build artifacts + uses: eProsima/eProsima-CI/external/download-artifact@v0 + with: + name: build_artifacts_fastdds_asan_${{ inputs.label }} + path: ${{ github.workspace }} + + - name: Get minimum supported version of CMake + uses: eProsima/eProsima-CI/external/get-cmake@v0 + with: + cmakeVersion: '3.22.6' + + - name: Install apt packages + uses: eProsima/eProsima-CI/ubuntu/install_apt_packages@v0 + with: + packages: curl grep libasio-dev libtinyxml2-dev python3 python3-pip software-properties-common wget + + - name: Install colcon + uses: eProsima/eProsima-CI/ubuntu/install_colcon@v0 + + - name: Install Python dependencies + uses: eProsima/eProsima-CI/ubuntu/install_python_packages@v0 + with: + packages: vcstool setuptools gcovr tomark xmltodict jsondiff pandas + + - name: Setup CCache + uses: eProsima/eProsima-CI/external/setup-ccache-action@v0 + + - name: Show .meta file + id: show_meta + run: | + cat ${{ github.workspace }}/src/fastrtps/.github/workflows/config/asan_colcon.meta + + - name: Colcon build + continue-on-error: false + uses: eProsima/eProsima-CI/multiplatform/colcon_build@v0 + with: + colcon_meta_file: ${{ github.workspace }}/src/fastrtps/.github/workflows/config/asan_colcon.meta + colcon_build_args: ${{ inputs.colcon_build_args }} + cmake_args: ${{ inputs.cmake_args }} + cmake_args_default: -DEPROSIMA_BUILD_TESTS=ON -DRTPS_API_TESTS=ON -DFASTRTPS_API_TESTS=ON -DFASTDDS_PIM_API_TESTS=ON -DPERFORMANCE_TESTS=ON + cmake_build_type: 'Debug' + workspace: ${{ github.workspace }} + workspace_dependencies: '' + + - name: Colcon test + if: ${{ inputs.run_asan_fastdds }} + id: test + continue-on-error: true + uses: eProsima/eProsima-CI/multiplatform/colcon_test@v0 + with: + colcon_test_args: ${{ inputs.colcon_test_args }} + colcon_test_args_default: '--event-handlers=console_direct+ --return-code-on-test-failure' + ctest_args: ${{ inputs.ctest_args }} + ctest_args_default: '--timeout 300 --label-exclude "xfail"' + packages_names: fastrtps + workspace: ${{ github.workspace }} + workspace_dependencies: '' + test_report_artifact: ${{ format('test_report_{0}_{1}', inputs.label, github.job) }} + + - name: Report sanitizer errors + if: ${{ inputs.run_asan_fastdds }} + run: | + bash src/fastrtps/.github/workflows/utils/specific_errors_filter.sh \ + "==ERROR:" \ + log/latest_test/fastrtps/stdout_stderr.log \ + _tmp_specific_error_file.log + + python3 src/fastrtps/.github/workflows/utils/log_parser.py \ + --log-file log/latest_test/fastrtps/stdout_stderr.log \ + --specific-error-file _tmp_specific_error_file.log \ + --output-file $GITHUB_STEP_SUMMARY \ + --sanitizer asan + + asan_discovery_server_test: + if: ${{ ( + !contains(github.event.pull_request.labels.*.name, 'skip-ci') && + !contains(github.event.pull_request.labels.*.name, 'no-test') && + !contains(github.event.pull_request.labels.*.name, 'conflicts') && + (inputs.run_asan_discovery_server == true) + ) }} + needs: asan_fastdds_build + runs-on: ubuntu-22.04 + steps: + - name: Download build artifacts + uses: eProsima/eProsima-CI/external/download-artifact@v0 + with: + name: build_artifacts_fastdds_asan_${{ inputs.label }} + path: ${{ github.workspace }} + + - name: Get minimum supported version of CMake + uses: eProsima/eProsima-CI/external/get-cmake@v0 + with: + cmakeVersion: '3.22.6' + + - name: Install apt packages + uses: eProsima/eProsima-CI/ubuntu/install_apt_packages@v0 + with: + packages: curl grep libasio-dev libtinyxml2-dev python3 python3-pip software-properties-common wget + + - name: Install colcon + uses: eProsima/eProsima-CI/ubuntu/install_colcon@v0 + + - name: Install Python dependencies + uses: eProsima/eProsima-CI/ubuntu/install_python_packages@v0 + with: + packages: vcstool setuptools gcovr tomark xmltodict jsondiff pandas + + - name: Setup CCache + uses: eProsima/eProsima-CI/external/setup-ccache-action@v0 + + - name: Get Discovery Server branch + id: get_discovery_server_branch + uses: eProsima/eProsima-CI/ubuntu/get_related_branch_from_repo@v0 + with: + remote_repository: eProsima/Discovery-Server + fallback_branch: ${{ inputs.discovery_server_ref }} + + - name: Download Discovery Server repo + uses: eProsima/eProsima-CI/external/checkout@v0 + with: + repository: eProsima/Discovery-Server + path: src/discovery-server + ref: ${{ steps.get_discovery_server_branch.outputs.deduced_branch }} + + - name: Show .meta file + id: show_meta + run: | + cat ${{ github.workspace }}/src/fastrtps/.github/workflows/config/asan_colcon.meta + + - name: Colcon build + continue-on-error: false + uses: eProsima/eProsima-CI/multiplatform/colcon_build@v0 + with: + colcon_meta_file: ${{ github.workspace }}/src/fastrtps/.github/workflows/config/asan_colcon.meta + colcon_build_args: ${{ inputs.colcon_build_args }} + cmake_args: ${{ inputs.cmake_args }} + cmake_args_default: '' + cmake_build_type: 'Debug' + workspace: ${{ github.workspace }} + workspace_dependencies: '' + + - name: Colcon test + if: ${{ inputs.run_asan_fastdds }} + id: test + continue-on-error: true + uses: eProsima/eProsima-CI/multiplatform/colcon_test@v0 + with: + colcon_test_args: ${{ inputs.colcon_test_args }} + colcon_test_args_default: '--event-handlers=console_direct+ --return-code-on-test-failure' + ctest_args: ${{ inputs.ctest_args }} + ctest_args_default: '--timeout 300 --label-exclude "xfail"' + packages_names: discovery-server + workspace: ${{ github.workspace }} + workspace_dependencies: '' + test_report_artifact: ${{ format('test_report_{0}_{1}', inputs.label, github.job) }} + + - name: Report sanitizer errors + if: ${{ inputs.run_asan_discovery_server }} + run: | + bash src/fastrtps/.github/workflows/utils/specific_errors_filter.sh \ + "==ERROR:" \ + log/latest_test/discovery-server/stdout_stderr.log \ + _tmp_specific_error_file.log + + python3 src/fastrtps/.github/workflows/utils/log_parser.py \ + --log-file log/latest_test/discovery-server/stdout_stderr.log \ + --specific-error-file _tmp_specific_error_file.log \ + --output-file $GITHUB_STEP_SUMMARY \ + --sanitizer=asan + + tsan_fastdds_test: + if: ${{ ( + !contains(github.event.pull_request.labels.*.name, 'skip-ci') && + !contains(github.event.pull_request.labels.*.name, 'no-test') && + !contains(github.event.pull_request.labels.*.name, 'conflicts') && + (inputs.run_tsan_fastdds == true) + ) }} + runs-on: ubuntu-22.04 + env: + TSAN_OPTIONS: second_deadlock_stack=1 history_size=7 memory_limit_mb=5000 + # GCC 11.3 (Ubuntu Jammy default) produces several false positives regarding timed synchronization protocols + # These issues were fixed in GCC 12 so we upgrade to that version. + CC: gcc-12 + CXX: g++-12 + steps: + - name: Add ci-pending label if PR + if: ${{ github.event_name == 'pull_request' }} + uses: eProsima/eProsima-CI/external/add_labels@v0 + with: + labels: ci-pending + number: ${{ github.event.number }} + repo: eProsima/Fast-DDS + + - name: Sync eProsima/Fast-DDS repository + uses: eProsima/eProsima-CI/external/checkout@v0 + with: + path: src/fastrtps + ref: ${{ inputs.fastdds_ref }} + + - name: Get minimum supported version of CMake + uses: eProsima/eProsima-CI/external/get-cmake@v0 + with: + cmakeVersion: '3.22.6' + + - name: Install apt packages + uses: eProsima/eProsima-CI/ubuntu/install_apt_packages@v0 + with: + packages: curl grep libasio-dev libtinyxml2-dev python3 python3-pip software-properties-common wget + + - name: Install colcon + uses: eProsima/eProsima-CI/ubuntu/install_colcon@v0 + + - name: Install Python dependencies + uses: eProsima/eProsima-CI/ubuntu/install_python_packages@v0 + with: + packages: vcstool setuptools gcovr tomark xmltodict jsondiff pandas + + - name: Setup CCache + uses: eProsima/eProsima-CI/external/setup-ccache-action@v0 + + - name: Fetch Fast DDS dependencies + uses: eProsima/eProsima-CI/multiplatform/vcs_import@v0 + with: + vcs_repos_file: ${{ github.workspace }}/src/fastrtps/fastrtps.repos + destination_workspace: src + skip_existing: 'true' + + - name: Fetch Fast DDS CI dependencies + uses: eProsima/eProsima-CI/multiplatform/vcs_import@v0 + with: + vcs_repos_file: ${{ github.workspace }}/src/fastrtps/.github/workflows/config/ci.repos + destination_workspace: src + skip_existing: 'true' + + - name: Show .meta file + id: show_meta + run: | + cat ${{ github.workspace }}/src/fastrtps/.github/workflows/config/tsan_colcon.meta + + - name: Colcon build + continue-on-error: false + uses: eProsima/eProsima-CI/multiplatform/colcon_build@v0 + with: + colcon_meta_file: ${{ github.workspace }}/src/fastrtps/.github/workflows/config/tsan_colcon.meta + colcon_build_args: ${{ inputs.colcon_build_args }} + cmake_args: ${{ inputs.cmake_args }} + cmake_args_default: '' + cmake_build_type: 'Debug' + workspace: ${{ github.workspace }} + workspace_dependencies: '' + + - name: Colcon test + if: ${{ inputs.run_asan_fastdds }} + id: test + continue-on-error: true + uses: eProsima/eProsima-CI/multiplatform/colcon_test@v0 + with: + colcon_test_args: ${{ inputs.colcon_test_args }} + colcon_test_args_default: '--event-handlers=console_direct+ --return-code-on-test-failure' + ctest_args: ${{ inputs.ctest_args }} + ctest_args_default: '--timeout 300 --label-exclude "xfail" -V -E DDSSQLFilterValueTests' + packages_names: fastrtps + workspace: ${{ github.workspace }} + workspace_dependencies: '' + test_report_artifact: ${{ format('test_report_{0}_{1}', inputs.label, github.job) }} + + - name: Process sanitizer reports + id: report_summary + shell: pwsh + continue-on-error: true + run: | + # Create a dir for the exports + $exports = New-Item -ItemType Directory -Path ./exports + # Move to the reports dir + pushd ./log/latest_test/fastrtps + # Install the report parser module + Find-Module -Repository PSGallery -Name SanReportParser | Install-Module -Scope CurrentUser -Force + # Parse the report files + $rp = Show-Tsan -Path ./stdout_stderr.log + # filter duplicates + $rp = $rp | group md5hash | % { $_.group[0] } + # Export raw data + $rp | Export-CliXML (Join-Path $exports all_reports.xml) + # Group the reports by issue + $g = $rp | group fuzzhash + # Split up deadlocks and race reports + $gd = $rp | ? type -match dead | group fuzzhash + $gr = $rp | ? type -match race | group fuzzhash + # Simplified deadlock summary (only one representative report and tests associated) + $sd = $gd | Sort-Object count -desc | select @{l="fuzzhash";e="name"}, count, ` + @{l="échantillon";e={$_.group[0].report}}, @{l="tests"; ` + e={$_.group.file | sls "(.*)\.\d+$" | % { $_.Matches.Groups[1].Value } | Sort-Object | get-unique}} + # Simplified race summary (only one representative report and tests associated) + $sr = $gr | Sort-Object count -desc | select @{l="fuzzhash";e="name"}, count, ` + @{l="échantillon";e={$_.group[0].report}}, @{l="tests"; ` + e={$_.group.file | sls "(.*)\.\d+$" | % { $_.Matches.Groups[1].Value } | Sort-Object | get-unique}} + # Export simplified summaries + $sd, $sr | Export-Clixml (Join-Path $exports summary_data.xml) + # Export CSV summary of frequencies + $sd | select fuzzhash, count | Export-CSV -Path (Join-Path $exports deadlocks.csv) + $sr | select fuzzhash, count | Export-CSV -Path (Join-Path $exports races.csv) + # Export test mappings + & {$sd; $sr} | Sort-Object { [int]$_.fuzzhash} | % { $fuzzy=$_.fuzzhash;$_.tests | + select @{l="fuzzhash";e={$fuzzy}}, @{l="test";e={$_}}} | + Export-Csv (Join-Path $exports issue_test_map.csv) + # Keep a file per issue + $dir = New-Item -ItemType Directory -Path (Join-Path $exports reports) + & {$sd; $sr} | % { $_.échantillon | Out-File (Join-Path $dir "$($_.fuzzhash).tsan") } + # Create a summary table + @{Type="Deadlock";Failed=$sd.count;Hashes=$sd.fuzzhash}, + @{Type="Data race";Failed=$sr.count;Hashes=$sr.fuzzhash} | + % { $_.Summary = $_.Hashes | select -First 5 | Join-String -Separator ", " + if ($_.Hashes.count -gt 5 ) { + $_.Summary += ", ..." }; $_ } | + % { [PSCustomObject]$_} | + New-MDTable -Columns ([ordered]@{Failed=$null;Type=$null;Summary=$null}) | + Out-File $Env:GITHUB_STEP_SUMMARY + # The step fails on new deadlocks + $LASTEXITCODE=$sd.count + + - name: Check on failures + if: ${{ steps.report_summary.outcome == 'failure' }} + shell: pwsh + run: | + Write-Host ${{ steps.report_summary.outcome }} + exit 1 diff --git a/.github/workflows/sanitizers-ci.yml b/.github/workflows/sanitizers-ci.yml new file mode 100644 index 00000000000..bb13baecd13 --- /dev/null +++ b/.github/workflows/sanitizers-ci.yml @@ -0,0 +1,77 @@ +name: Fast DDS Sanitizers CI + +on: + workflow_dispatch: + inputs: + label: + description: 'ID associated to the workflow' + required: true + type: string + run_asan_fastdds: + description: 'Run Addess Sanitizer job for Fast DDS' + required: false + type: boolean + run_asan_discovery_server: + description: 'Run Addess Sanitizer job for Discovery Server' + required: false + type: boolean + run_tsan_fastdds: + description: 'Run Thread Sanitizer job for Fast DDS' + required: false + type: boolean + colcon_build_args: + description: 'Optional colcon build arguments' + required: false + type: string + colcon_test_args: + description: 'Optional colcon test arguments' + required: false + type: string + cmake_args: + description: 'Optional CMake Compilation Flags' + required: false + type: string + ctest_args: + description: 'Optional CTest Testing Flags' + required: false + type: string + fastdds_ref: + description: 'Branch or tag of Fast DDS repository (https://github.com/eProsima/Fast-DDS)' + required: true + discovery_server_ref: + description: > + Branch or tag of Discovery Server repository (https://github.com/eProsima/Discovery-Server) + Required only if the Discovery Server job is requested + required: false + + pull_request: + types: + - review_requested + paths-ignore: + - '**.md' + - '**.txt' + - '!**/CMakeLists.txt' + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + sanitizers-ci: + if: ${{ ( + !contains(github.event.pull_request.labels.*.name, 'skip-ci') && + !contains(github.event.pull_request.labels.*.name, 'no-test') && + !contains(github.event.pull_request.labels.*.name, 'conflicts') + ) }} + uses: ./.github/workflows/reusable-sanitizers-ci.yml + with: + label: ${{ inputs.label || 'fastdds-sanitizers-ci' }} + run_asan_fastdds: ${{ inputs.run_asan_fastdds || github.event_name == 'pull_request' }} + run_asan_discovery_server: ${{ inputs.run_asan_discovery_server || github.event_name == 'pull_request' }} + run_tsan_fastdds: ${{ inputs.run_tsan_fastdds || github.event_name == 'pull_request' }} + colcon_build_args: ${{ inputs.colcon_build_args || '' }} + colcon_test_args: ${{ inputs.colcon_test_args || '' }} + cmake_args: ${{ inputs.cmake_args || '' }} + ctest_args: ${{ inputs.ctest_args || '' }} + fastdds_ref: ${{ inputs.fastdds_ref || github.ref || 'master' }} + discovery_server_ref: ${{ inputs.discovery_server_ref || 'master' }} From 7c95d55adbe17af004c074b5b85a9792eb6aaa19 Mon Sep 17 00:00:00 2001 From: Mario Dominguez Date: Mon, 15 Apr 2024 09:25:31 +0200 Subject: [PATCH 2/6] Refs #20703: Fix conflicts Signed-off-by: Mario Dominguez --- .github/workflows/config/asan_colcon.meta | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/config/asan_colcon.meta b/.github/workflows/config/asan_colcon.meta index e45f2f2cf30..fed5090f00f 100644 --- a/.github/workflows/config/asan_colcon.meta +++ b/.github/workflows/config/asan_colcon.meta @@ -1,7 +1,6 @@ names: fastrtps: cmake-args: -<<<<<<< HEAD - "-DCMAKE_BUILD_TYPE=Debug" - "-DEPROSIMA_BUILD_TESTS=ON" - "-DGTEST_INDIVIDUAL=ON" @@ -9,8 +8,6 @@ names: - "-DFASTRTPS_API_TESTS=ON" - "-DFASTDDS_PIM_API_TESTS=ON" - "-DPERFORMANCE_TESTS=ON" -======= ->>>>>>> ac0e737a9 (Refactor Github CI sanitizer related jobs (#4662)) - "-DNO_TLS=OFF" - "-DSECURITY=ON" - "-DFASTDDS_STATISTICS=ON" From b78232762e3f9c1bd9a1b21f41ffbb99c7af88ad Mon Sep 17 00:00:00 2001 From: Mario Dominguez Date: Mon, 15 Apr 2024 09:26:56 +0200 Subject: [PATCH 3/6] Refs #20703: Remove sanitizer nightlies Signed-off-by: Mario Dominguez --- .github/workflows/nightly-sanitizers-ci.yml | 77 --------------------- 1 file changed, 77 deletions(-) delete mode 100644 .github/workflows/nightly-sanitizers-ci.yml diff --git a/.github/workflows/nightly-sanitizers-ci.yml b/.github/workflows/nightly-sanitizers-ci.yml deleted file mode 100644 index 1ae72bb441f..00000000000 --- a/.github/workflows/nightly-sanitizers-ci.yml +++ /dev/null @@ -1,77 +0,0 @@ -name: Fast DDS Sanitizers CI - -on: - workflow_dispatch: - schedule: - - cron: '0 1 * * *' - -jobs: - nightly-sanitizers-ci-master: - uses: ./.github/workflows/reusable-sanitizers-ci.yml - with: - label: 'nightly-sec-sanitizers-ci-master' - run_asan_fastdds: true - run_asan_discovery_server: true - run_tsan_fastdds: true - colcon_build_args: '' - colcon_test_args: '' - cmake_args: '' - ctest_args: '' - fastdds_ref: 'master' - discovery_server_ref: 'master' - - nightly-sanitizers-ci-2_13_x: - uses: ./.github/workflows/reusable-sanitizers-ci.yml - with: - label: 'nightly-sec-sanitizers-ci-2.13.x' - run_asan_fastdds: true - run_asan_discovery_server: true - run_tsan_fastdds: true - colcon_build_args: '' - colcon_test_args: '' - cmake_args: '' - ctest_args: '' - fastdds_ref: '2.13.x' - discovery_server_ref: 'v1.2.2' - - nightly-sanitizers-ci-2_10_x: - uses: ./.github/workflows/reusable-sanitizers-ci.yml - with: - label: 'nightly-sec-sanitizers-ci-2.10.x' - run_asan_fastdds: true - run_asan_discovery_server: true - run_tsan_fastdds: true - colcon_build_args: '' - colcon_test_args: '' - cmake_args: '' - ctest_args: '' - fastdds_ref: '2.10.x' - discovery_server_ref: 'v1.2.1' - - nightly-sanitizers-ci-2_6_x: - uses: ./.github/workflows/reusable-sanitizers-ci.yml - with: - label: 'nightly-sec-sanitizers-ci-2.6.x' - run_asan_fastdds: true - run_asan_discovery_server: true - run_tsan_fastdds: true - colcon_build_args: '' - colcon_test_args: '' - cmake_args: '' - ctest_args: '' - fastdds_ref: '2.6.x' - discovery_server_ref: 'v1.2.1' - - nightly-sanitizers-ci-3_0_x-devel: - uses: ./.github/workflows/reusable-sanitizers-ci.yml - with: - label: 'nightly-sec-sanitizers-ci-3.0.x-devel' - run_asan_fastdds: true - run_asan_discovery_server: true - run_tsan_fastdds: true - colcon_build_args: '' - colcon_test_args: '' - cmake_args: '' - ctest_args: '' - fastdds_ref: '3.0.x-devel' - discovery_server_ref: '3.0.x-devel' From 1ee7834b3dbfe6350144b01fa84c62278402a2f2 Mon Sep 17 00:00:00 2001 From: Mario Dominguez Date: Mon, 15 Apr 2024 12:19:16 +0200 Subject: [PATCH 4/6] Refs #20703: Remove old sanitizer jobs Signed-off-by: Mario Dominguez --- .github/workflows/address-sanitizers.yaml | 245 ---------------------- .github/workflows/thread-sanitizer.yaml | 203 ------------------ 2 files changed, 448 deletions(-) delete mode 100644 .github/workflows/address-sanitizers.yaml delete mode 100644 .github/workflows/thread-sanitizer.yaml diff --git a/.github/workflows/address-sanitizers.yaml b/.github/workflows/address-sanitizers.yaml deleted file mode 100644 index cb4ed07ca36..00000000000 --- a/.github/workflows/address-sanitizers.yaml +++ /dev/null @@ -1,245 +0,0 @@ -name: Address Sanitizer analysis - -on: - workflow_dispatch: - inputs: - discovery_server_branch: - description: 'Branch or tag of Discovery Server repository (https://github.com/eProsima/Discovery-Server)' - required: true - default: 'v1.2.1' - fastdds_branch: - description: 'Branch or tag of Fast DDS repository (https://github.com/eProsima/Fast-DDS)' - required: true - default: '2.6.x' - - pull_request: - types: - - review_requested - paths-ignore: - - '**.md' - - '**.txt' - - '!**/CMakeLists.txt' - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -jobs: - asan-test: - - if: ${{ ( - !contains(github.event.pull_request.labels.*.name, 'skip-ci') && - !contains(github.event.pull_request.labels.*.name, 'no-test') && - !contains(github.event.pull_request.labels.*.name, 'conflicts') - ) }} - - runs-on: ubuntu-22.04 - - env: - FASTDDS_BRANCH: ${{ github.head_ref || github.event.inputs.fastdds_branch || '2.6.x' }} - - steps: - - name: Add ci-pending label if PR - if: ${{ github.event_name == 'pull_request' }} - uses: eProsima/eProsima-CI/external/add_labels@v0 - with: - labels: ci-pending - number: ${{ github.event.number }} - repo: eProsima/Fast-DDS - - # https://github.com/actions/runner-images/issues/9491 - - name: Fix kernel mmap rnd bits - run: sudo sysctl vm.mmap_rnd_bits=28 - - - name: Install apt packages - uses: eProsima/eProsima-CI/ubuntu/install_apt_packages@v0 - with: - packages: curl grep libasio-dev libtinyxml2-dev python3 python3-pip software-properties-common wget - - - name: Get minimum supported version of CMake - uses: eProsima/eProsima-CI/external/get-cmake@v0 - with: - cmakeVersion: '3.22.6' - - - name: Setup CCache - uses: eProsima/eProsima-CI/external/setup-ccache-action@v0 - - - name: Install colcon - uses: eProsima/eProsima-CI/ubuntu/install_colcon@v0 - - - name: Install Python dependencies - uses: eProsima/eProsima-CI/ubuntu/install_python_packages@v0 - with: - packages: vcstool setuptools gcovr tomark xmltodict jsondiff pandas - - - name: Get fastrtps.repos file - uses: eProsima/eProsima-CI/ubuntu/get_file_from_repo@v0 - with: - source_repository: eProsima/Fast-DDS - source_repository_branch: ${{ env.FASTDDS_BRANCH }} - file_name: fastrtps.repos - file_result: fastrtps.repos - - - name: Fetch Fast DDS & dependencies - uses: eProsima/eProsima-CI/ubuntu/vcs_import@v0 - with: - vcs_repos_file: fastrtps.repos - destination_workspace: src - - - name: Checkout Fast DDS branch - run: | - cd ./src/fastrtps - git checkout ${{ env.FASTDDS_BRANCH }} - - - name: Fetch Fast DDS ASan dependencies - uses: eProsima/eProsima-CI/multiplatform/vcs_import@v0 - with: - vcs_repos_file: ${{ github.workspace }}/src/fastrtps/.github/workflows/config/asan.repos - destination_workspace: src - skip_existing: 'true' - - - name: Build workspace - run: | - cat src/fastrtps/.github/workflows/config/asan_colcon.meta - colcon build \ - --event-handlers=console_direct+ \ - --metas src/fastrtps/.github/workflows/config/asan_colcon.meta - - - name: Run tests Fast DDS - run: | - source install/setup.bash && \ - colcon test \ - --packages-select fastrtps \ - --event-handlers=console_direct+ \ - --return-code-on-test-failure \ - --ctest-args \ - --label-exclude xfail \ - --timeout 300 - continue-on-error: true - - - name: Upload Logs - uses: actions/upload-artifact@v1 - with: - name: asan-logs - path: log/ - if: always() - - - name: Report ASAN errors - if: always() - run: | - bash src/fastrtps/.github/workflows/utils/specific_errors_filter.sh "==ERROR:" log/latest_test/fastrtps/stdout_stderr.log _tmp_specific_error_file.log - python3 src/fastrtps/.github/workflows/utils/log_parser.py --log-file log/latest_test/fastrtps/stdout_stderr.log --specific-error-file _tmp_specific_error_file.log --output-file $GITHUB_STEP_SUMMARY --sanitizer asan - - - asan-discovery-server-test: - - if: ${{ ( - !contains(github.event.pull_request.labels.*.name, 'skip-ci') && - !contains(github.event.pull_request.labels.*.name, 'no-test') && - !contains(github.event.pull_request.labels.*.name, 'conflicts') - ) }} - - runs-on: ubuntu-22.04 - - env: - FASTDDS_BRANCH: ${{ github.head_ref || github.event.inputs.fastdds_branch || '2.6.x' }} - DEFAULT_DISCOVERY_SERVER_BRANCH: ${{ github.event.inputs.discovery_server_branch || 'v1.2.1' }} - - steps: - - name: Add ci-pending label if PR - if: ${{ github.event_name == 'pull_request' }} - uses: eProsima/eProsima-CI/external/add_labels@v0 - with: - labels: ci-pending - number: ${{ github.event.number }} - repo: eProsima/Fast-DDS - - # https://github.com/actions/runner-images/issues/9491 - - name: Fix kernel mmap rnd bits - run: sudo sysctl vm.mmap_rnd_bits=28 - - - name: Install apt packages - uses: eProsima/eProsima-CI/ubuntu/install_apt_packages@v0 - with: - packages: curl grep libasio-dev libtinyxml2-dev python3 python3-pip software-properties-common wget - - - name: Get minimum supported version of CMake - uses: eProsima/eProsima-CI/external/get-cmake@v0 - with: - cmakeVersion: '3.22.6' - - - name: Setup CCache - uses: eProsima/eProsima-CI/external/setup-ccache-action@v0 - - - name: Install colcon - uses: eProsima/eProsima-CI/ubuntu/install_colcon@v0 - - - name: Install Python dependencies - uses: eProsima/eProsima-CI/ubuntu/install_python_packages@v0 - with: - packages: vcstool setuptools gcovr tomark xmltodict jsondiff pandas - - - name: Get fastrtps.repos file - uses: eProsima/eProsima-CI/ubuntu/get_file_from_repo@v0 - with: - source_repository: eProsima/Fast-DDS - source_repository_branch: ${{ env.FASTDDS_BRANCH }} - file_name: fastrtps.repos - file_result: fastrtps.repos - - - name: Fetch Fast DDS & dependencies - uses: eProsima/eProsima-CI/ubuntu/vcs_import@v0 - with: - vcs_repos_file: fastrtps.repos - destination_workspace: src - - - name: Checkout Fast DDS branch - run: | - cd ./src/fastrtps - git checkout ${{ env.FASTDDS_BRANCH }} - - - name: Sync eProsima/Discovery-Server repository - uses: actions/checkout@v4 - with: - path: src/discovery_server - repository: eProsima/Discovery-Server - ref: ${{ env.DEFAULT_DISCOVERY_SERVER_BRANCH }} - - - name: Fetch Fast DDS ASan dependencies - uses: eProsima/eProsima-CI/multiplatform/vcs_import@v0 - with: - vcs_repos_file: ${{ github.workspace }}/src/fastrtps/.github/workflows/config/asan.repos - destination_workspace: src - skip_existing: 'true' - - - name: Build workspace - run: | - cat src/fastrtps/.github/workflows/config/asan_colcon.meta - colcon build \ - --event-handlers=console_direct+ \ - --metas src/fastrtps/.github/workflows/config/asan_colcon.meta - - - name: Run tests Fast DDS - run: | - source install/setup.bash && \ - colcon test \ - --packages-select discovery-server \ - --event-handlers=console_direct+ \ - --return-code-on-test-failure \ - --ctest-args \ - --label-exclude xfail \ - --timeout 300 - continue-on-error: true - - - name: Upload Logs - uses: actions/upload-artifact@v1 - with: - name: asan-ds-logs - path: log/ - if: always() - - - name: Report ASAN errors - if: always() - run: | - bash src/fastrtps/.github/workflows/utils/specific_errors_filter.sh "==ERROR:" log/latest_test/discovery-server/stdout_stderr.log _tmp_specific_error_file.log - python3 src/fastrtps/.github/workflows/utils/log_parser.py --log-file log/latest_test/discovery-server/stdout_stderr.log --specific-error-file _tmp_specific_error_file.log --output-file $GITHUB_STEP_SUMMARY --sanitizer=asan diff --git a/.github/workflows/thread-sanitizer.yaml b/.github/workflows/thread-sanitizer.yaml deleted file mode 100644 index 77a9d539a1d..00000000000 --- a/.github/workflows/thread-sanitizer.yaml +++ /dev/null @@ -1,203 +0,0 @@ -name: Thread Sanitizer analysis -on: - workflow_dispatch: - inputs: - fastdds_branch: - description: 'Branch or tag of Fast DDS repository (https://github.com/eProsima/Fast-DDS)' - required: true - default: '2.6.x' - optional_cmake_args: - description: 'Optional CMake Compilation Flags' - required: false - type: string - optional_ctest_args: - description: 'Optional CTest Testing Flags' - required: false - type: string - - pull_request: - types: - - review_requested - paths-ignore: - - '**.md' - - '**.txt' - - '!**/CMakeLists.txt' - -concurrency: - group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -jobs: - - ubuntu-sanitizer-run: - name: Sanitizer Evaluation - - if: ${{ ( - !contains(github.event.pull_request.labels.*.name, 'skip-ci') && - !contains(github.event.pull_request.labels.*.name, 'no-test') && - !contains(github.event.pull_request.labels.*.name, 'conflicts') - ) }} - - runs-on: ubuntu-22.04 - - env: - FASTDDS_BRANCH: ${{ github.head_ref || github.event.inputs.fastdds_branch || '2.6.x' }} - TSAN_OPTIONS: second_deadlock_stack=1 history_size=7 memory_limit_mb=5000 - # GCC 11.3 (Ubuntu Jammy default) produces several false positives regarding timed synchronization protocols - # These issues were fixed in GCC 12 so we upgrade to that version. - CC: gcc-12 - CXX: g++-12 - - steps: - - name: Add ci-pending label if PR - if: ${{ github.event_name == 'pull_request' }} - uses: eProsima/eProsima-CI/external/add_labels@v0 - with: - labels: ci-pending - number: ${{ github.event.number }} - repo: eProsima/Fast-DDS - - # https://github.com/actions/runner-images/issues/9491 - - name: Fix kernel mmap rnd bits - run: sudo sysctl vm.mmap_rnd_bits=28 - - - name: Install apt packages - uses: eProsima/eProsima-CI/ubuntu/install_apt_packages@v0 - with: - packages: curl grep libasio-dev libtinyxml2-dev python3 python3-pip software-properties-common wget - - - name: Get minimum supported version of CMake - uses: eProsima/eProsima-CI/external/get-cmake@v0 - with: - cmakeVersion: '3.22.6' - - - name: Setup CCache - uses: eProsima/eProsima-CI/external/setup-ccache-action@v0 - - - name: Install colcon - uses: eProsima/eProsima-CI/ubuntu/install_colcon@v0 - - - name: Install Python dependencies - uses: eProsima/eProsima-CI/ubuntu/install_python_packages@v0 - with: - packages: vcstool setuptools gcovr tomark xmltodict jsondiff pandas - - - name: Get fastrtps.repos file - uses: eProsima/eProsima-CI/ubuntu/get_file_from_repo@v0 - with: - source_repository: eProsima/Fast-DDS - source_repository_branch: ${{ env.FASTDDS_BRANCH }} - file_name: fastrtps.repos - file_result: fastrtps.repos - - - name: Fetch Fast DDS & dependencies - uses: eProsima/eProsima-CI/ubuntu/vcs_import@v0 - with: - vcs_repos_file: fastrtps.repos - destination_workspace: src - - - name: Checkout Fast DDS branch - run: | - cd ./src/fastrtps - git checkout ${{ env.FASTDDS_BRANCH }} - - - name: Fetch Fast DDS CI dependencies - uses: eProsima/eProsima-CI/multiplatform/vcs_import@v0 - with: - vcs_repos_file: ${{ github.workspace }}/src/fastrtps/.github/workflows/config/ci.repos - destination_workspace: src - skip_existing: 'true' - - - name: Build workspace - run: | - cat src/fastrtps/.github/workflows/config/tsan_colcon.meta - colcon build \ - --event-handlers=console_direct+ \ - --metas src/fastrtps/.github/workflows/config/tsan_colcon.meta \ - --cmake-args -DCMAKE_BUILD_TYPE=Debug ${{ inputs.optional_cmake_args }} - - - name: Run tests Fast DDS - run: | - source install/setup.bash && \ - colcon test \ - --packages-select fastrtps \ - --event-handlers=console_direct+ \ - --return-code-on-test-failure \ - --ctest-args \ - --timeout 30 \ - -V -E DDSSQLFilterValueTests ${{ inputs.optional_ctest_args }} - continue-on-error: true - - - name: Upload Logs - uses: actions/upload-artifact@v3 - with: - name: tsan-logs - path: log/ - if: always() - - - name: Process sanitizer reports - id: report_summary - shell: pwsh - continue-on-error: true - run: | - # Create a dir for the exports - $exports = New-Item -ItemType Directory -Path ./exports - # Move to the reports dir - pushd ./log/latest_test/fastrtps - # Install the report parser module - Find-Module -Repository PSGallery -Name SanReportParser | Install-Module -Scope CurrentUser -Force - # Parse the report files - $rp = Show-Tsan -Path ./stdout_stderr.log - # filter duplicates - $rp = $rp | group md5hash | % { $_.group[0] } - # Export raw data - $rp | Export-CliXML (Join-Path $exports all_reports.xml) - # Group the reports by issue - $g = $rp | group fuzzhash - # Split up deadlocks and race reports - $gd = $rp | ? type -match dead | group fuzzhash - $gr = $rp | ? type -match race | group fuzzhash - # Simplified deadlock summary (only one representative report and tests associated) - $sd = $gd | Sort-Object count -desc | select @{l="fuzzhash";e="name"}, count, ` - @{l="échantillon";e={$_.group[0].report}}, @{l="tests"; ` - e={$_.group.file | sls "(.*)\.\d+$" | % { $_.Matches.Groups[1].Value } | Sort-Object | get-unique}} - # Simplified race summary (only one representative report and tests associated) - $sr = $gr | Sort-Object count -desc | select @{l="fuzzhash";e="name"}, count, ` - @{l="échantillon";e={$_.group[0].report}}, @{l="tests"; ` - e={$_.group.file | sls "(.*)\.\d+$" | % { $_.Matches.Groups[1].Value } | Sort-Object | get-unique}} - # Export simplified summaries - $sd, $sr | Export-Clixml (Join-Path $exports summary_data.xml) - # Export CSV summary of frequencies - $sd | select fuzzhash, count | Export-CSV -Path (Join-Path $exports deadlocks.csv) - $sr | select fuzzhash, count | Export-CSV -Path (Join-Path $exports races.csv) - # Export test mappings - & {$sd; $sr} | Sort-Object { [int]$_.fuzzhash} | % { $fuzzy=$_.fuzzhash;$_.tests | - select @{l="fuzzhash";e={$fuzzy}}, @{l="test";e={$_}}} | - Export-Csv (Join-Path $exports issue_test_map.csv) - # Keep a file per issue - $dir = New-Item -ItemType Directory -Path (Join-Path $exports reports) - & {$sd; $sr} | % { $_.échantillon | Out-File (Join-Path $dir "$($_.fuzzhash).tsan") } - # Create a summary table - @{Type="Deadlock";Failed=$sd.count;Hashes=$sd.fuzzhash}, - @{Type="Data race";Failed=$sr.count;Hashes=$sr.fuzzhash} | - % { $_.Summary = $_.Hashes | select -First 5 | Join-String -Separator ", " - if ($_.Hashes.count -gt 5 ) { - $_.Summary += ", ..." }; $_ } | - % { [PSCustomObject]$_} | - New-MDTable -Columns ([ordered]@{Failed=$null;Type=$null;Summary=$null}) | - Out-File $Env:GITHUB_STEP_SUMMARY - # The step fails on new deadlocks - $LASTEXITCODE=$sd.count - - - name: Archive sanitation results - uses: actions/upload-artifact@v3 - with: - name: sanitation-report - path: exports/* - - - name: Check on failures - if: ${{ steps.report_summary.outcome == 'failure' }} - shell: pwsh - run: | - Write-Host ${{ steps.report_summary.outcome }} - exit 1 From 476dbfe77c2abbde6da951453d3c7a1088c10fd6 Mon Sep 17 00:00:00 2001 From: Mario Dominguez Date: Mon, 15 Apr 2024 12:19:50 +0200 Subject: [PATCH 5/6] Refs #20703: set default discovery server branch to v1.2.1 Signed-off-by: Mario Dominguez --- .github/workflows/sanitizers-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sanitizers-ci.yml b/.github/workflows/sanitizers-ci.yml index bb13baecd13..c9ab3b06cb1 100644 --- a/.github/workflows/sanitizers-ci.yml +++ b/.github/workflows/sanitizers-ci.yml @@ -74,4 +74,4 @@ jobs: cmake_args: ${{ inputs.cmake_args || '' }} ctest_args: ${{ inputs.ctest_args || '' }} fastdds_ref: ${{ inputs.fastdds_ref || github.ref || 'master' }} - discovery_server_ref: ${{ inputs.discovery_server_ref || 'master' }} + discovery_server_ref: ${{ inputs.discovery_server_ref || 'v1.2.1' }} From 9cd3ca2f03bfc7c92598e0713b815c88f3f68555 Mon Sep 17 00:00:00 2001 From: Mario Dominguez Date: Tue, 16 Apr 2024 13:05:27 +0200 Subject: [PATCH 6/6] #20703: Address review changes Signed-off-by: Mario Dominguez --- .github/workflows/config/asan_colcon.meta | 7 ------- .github/workflows/reusable-sanitizers-ci.yml | 10 +++++----- .github/workflows/sanitizers-ci.yml | 2 +- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/.github/workflows/config/asan_colcon.meta b/.github/workflows/config/asan_colcon.meta index fed5090f00f..b65a6285a16 100644 --- a/.github/workflows/config/asan_colcon.meta +++ b/.github/workflows/config/asan_colcon.meta @@ -1,13 +1,6 @@ names: fastrtps: cmake-args: - - "-DCMAKE_BUILD_TYPE=Debug" - - "-DEPROSIMA_BUILD_TESTS=ON" - - "-DGTEST_INDIVIDUAL=ON" - - "-DRTPS_API_TESTS=ON" - - "-DFASTRTPS_API_TESTS=ON" - - "-DFASTDDS_PIM_API_TESTS=ON" - - "-DPERFORMANCE_TESTS=ON" - "-DNO_TLS=OFF" - "-DSECURITY=ON" - "-DFASTDDS_STATISTICS=ON" diff --git a/.github/workflows/reusable-sanitizers-ci.yml b/.github/workflows/reusable-sanitizers-ci.yml index a08587bf322..ccd0ab96c81 100644 --- a/.github/workflows/reusable-sanitizers-ci.yml +++ b/.github/workflows/reusable-sanitizers-ci.yml @@ -77,7 +77,7 @@ jobs: - name: Get minimum supported version of CMake uses: eProsima/eProsima-CI/external/get-cmake@v0 with: - cmakeVersion: '3.22.6' + cmakeVersion: '3.16.3' - name: Install apt packages uses: eProsima/eProsima-CI/ubuntu/install_apt_packages@v0 @@ -145,7 +145,7 @@ jobs: - name: Get minimum supported version of CMake uses: eProsima/eProsima-CI/external/get-cmake@v0 with: - cmakeVersion: '3.22.6' + cmakeVersion: '3.16.3' - name: Install apt packages uses: eProsima/eProsima-CI/ubuntu/install_apt_packages@v0 @@ -175,7 +175,7 @@ jobs: colcon_meta_file: ${{ github.workspace }}/src/fastrtps/.github/workflows/config/asan_colcon.meta colcon_build_args: ${{ inputs.colcon_build_args }} cmake_args: ${{ inputs.cmake_args }} - cmake_args_default: -DEPROSIMA_BUILD_TESTS=ON -DRTPS_API_TESTS=ON -DFASTRTPS_API_TESTS=ON -DFASTDDS_PIM_API_TESTS=ON -DPERFORMANCE_TESTS=ON + cmake_args_default: -DEPROSIMA_BUILD_TESTS=ON -DGTEST_INDIVIDUAL=ON -DRTPS_API_TESTS=ON -DFASTRTPS_API_TESTS=ON -DFASTDDS_PIM_API_TESTS=ON -DPERFORMANCE_TESTS=ON cmake_build_type: 'Debug' workspace: ${{ github.workspace }} workspace_dependencies: '' @@ -228,7 +228,7 @@ jobs: - name: Get minimum supported version of CMake uses: eProsima/eProsima-CI/external/get-cmake@v0 with: - cmakeVersion: '3.22.6' + cmakeVersion: '3.16.3' - name: Install apt packages uses: eProsima/eProsima-CI/ubuntu/install_apt_packages@v0 @@ -338,7 +338,7 @@ jobs: - name: Get minimum supported version of CMake uses: eProsima/eProsima-CI/external/get-cmake@v0 with: - cmakeVersion: '3.22.6' + cmakeVersion: '3.16.3' - name: Install apt packages uses: eProsima/eProsima-CI/ubuntu/install_apt_packages@v0 diff --git a/.github/workflows/sanitizers-ci.yml b/.github/workflows/sanitizers-ci.yml index c9ab3b06cb1..49aa2b821ef 100644 --- a/.github/workflows/sanitizers-ci.yml +++ b/.github/workflows/sanitizers-ci.yml @@ -73,5 +73,5 @@ jobs: colcon_test_args: ${{ inputs.colcon_test_args || '' }} cmake_args: ${{ inputs.cmake_args || '' }} ctest_args: ${{ inputs.ctest_args || '' }} - fastdds_ref: ${{ inputs.fastdds_ref || github.ref || 'master' }} + fastdds_ref: ${{ inputs.fastdds_ref || github.ref || '2.6.x' }} discovery_server_ref: ${{ inputs.discovery_server_ref || 'v1.2.1' }}