Skip to content

Refactor Fast DDS Ubuntu CI to include several tests (#4860) #9

Refactor Fast DDS Ubuntu CI to include several tests (#4860)

Refactor Fast DDS Ubuntu CI to include several tests (#4860) #9

name: Fast-DDS Windows CI reusable workflow
on:
workflow_call:
inputs:
label:
description: 'ID associated to the workflow. Must univocally identify artifacts.'
required: true
type: string
colcon-args:
description: 'Extra arguments for colcon cli'
required: false
type: string
cmake-args:
description: 'Extra arguments for cmake cli'
required: false
type: string
ctest-args:
description: 'Extra arguments for ctest cli'
required: false
type: string
fastdds_branch:
description: 'Branch or tag of Fast DDS repository (https://github.com/eProsima/Fast-DDS)'
required: true
type: string
defaults:
run:
shell: pwsh
jobs:
reusable-windows-ci:
runs-on: windows-2019
strategy:
fail-fast: false
matrix:
cmake-config:
- 'RelWithDebInfo'
vs-toolset:
- 'v141'
- 'v142'
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
submodules: true
ref: ${{ inputs.fastdds_branch }}
- name: Install Fix Python version
uses: eProsima/eProsima-CI/external/setup-python@v0
with:
python-version: '3.11'
- name: Get minimum supported version of CMake
uses: eProsima/eProsima-CI/external/get-cmake@v0
with:
cmakeVersion: '3.16.3'
- name: Install OpenSSL
uses: eProsima/eprosima-CI/windows/install_openssl@v0
with:
version: '3.1.1'
- name: Update OpenSSL environment variables
run: |
# Update the environment
if (Test-Path -Path $Env:ProgramW6432\OpenSSL)
{
"OPENSSL64_ROOT=$Env:ProgramW6432\OpenSSL" | Out-File $Env:GITHUB_ENV -Append -Encoding OEM
}
elseif (Test-Path -Path $Env:ProgramW6432\OpenSSL-Win)
{
"OPENSSL64_ROOT=$Env:ProgramW6432\OpenSSL-Win" | Out-File $Env:GITHUB_ENV -Append -Encoding OEM
}
elseif (Test-Path -Path $Env:ProgramW6432\OpenSSL-Win64)
{
"OPENSSL64_ROOT=$Env:ProgramW6432\OpenSSL-Win64" | Out-File $Env:GITHUB_ENV -Append -Encoding OEM
}
else
{
Write-Error -Message "Cannot find OpenSSL installation."
exit 1
}
- name: Install colcon
uses: eProsima/eProsima-CI/windows/install_colcon@v0
- name: Install Python dependencies
uses: eProsima/eProsima-CI/windows/install_python_packages@v0
with:
packages: vcstool xmlschema
- name: Update known hosts file for DNS resolver testing
if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-test') }}
run: |
$hostfile = "$Env:SystemRoot\system32\drivers" -replace "\\", "/"
$hostfile += "/etc/hosts"
# DNS entries to add
$new_entries = @{
"localhost.test" = "127.0.0.1", "::1"
"www.eprosima.com.test" = "154.56.134.194"
"www.acme.com.test" = "216.58.215.164", "2a00:1450:400e:803::2004"
"www.foo.com.test" = "140.82.121.4", "140.82.121.3"
"acme.org.test" = "ff1e::ffff:efff:1"
}
# Modify the file
$mod = { Param([string]$FilePath, [Hashtable]$Entries )
$entries.GetEnumerator() |
% { $hostname = $_.key; $_.value |
% { "{0,-25} {1}" -f $_, $hostname }} |
Out-File $filepath -Append
}
& $mod -FilePath $hostfile -Entries $new_entries
# Show the result
gc $hostfile
- 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:
<<<<<<< HEAD

Check failure on line 140 in .github/workflows/reusable-windows-ci.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/reusable-windows-ci.yml

Invalid workflow file

You have an error in your yaml syntax on line 140
vcs_repos_file: ${{ github.workspace }}\src\fastrtps\.github\workflows\config\ci.repos
=======
vcs_repos_file: ${{ github.workspace }}\src\fastdds\.github\workflows\config\fastdds_test.repos
>>>>>>> 22338f3fc (Refactor Fast DDS Ubuntu CI to include several tests (#4860))
destination_workspace: src
skip_existing: 'true'
- name: Prepare build meta file
run: |
$build_meta_file = '${{ github.workspace }}\src\fastdds\.github\workflows\config\fastdds_build.meta'
$test_meta_file = '${{ github.workspace }}\src\fastdds\.github\workflows\config\fastdds_test.meta'
$build_test_meta_file = '${{ github.workspace }}\src\fastdds\.github\workflows\config\fastdds_build_test.meta'
# Read the content of the build meta file
$build_meta_content = Get-Content -Path $build_meta_file
# Read the content of the test meta file, starting from line 4 (skipping "name" line [1], cmake project name line [2] and "cmake-args" line [3])
$test_meta_content = Get-Content -Path $test_meta_file | Select-Object -Skip 3
# Combine the content of the build meta file and the test meta file
$combined_content = $build_meta_content + $test_meta_content
# Write the combined content to the build test meta file
$combined_content | Out-File -FilePath $build_test_meta_file -Encoding UTF8
- name: Build
id: build
continue-on-error: false
uses: eProsima/eProsima-CI/windows/colcon_build@v0
with:
<<<<<<< HEAD
colcon_meta_file: ${{ github.workspace }}\src\fastrtps\.github\workflows\config\ci.meta
=======
colcon_meta_file: ${{ github.workspace }}\src\fastdds\.github\workflows\config\fastdds_build_test.meta
>>>>>>> 22338f3fc (Refactor Fast DDS Ubuntu CI to include several tests (#4860))
colcon_build_args: ${{ inputs.colcon-args }}
# The following Fast DDS CMake options need to be specified here instead of in the meta files
# because they vary from platform to platform
cmake_args_default: ${{ inputs.cmake-args }} -T ${{ matrix.vs-toolset }} -DTHIRDPARTY_Asio=FORCE -DTHIRDPARTY_TinyXML2=FORCE -DTHIRDPARTY_fastcdr=OFF -DTHIRDPARTY_UPDATE=ON -DEPROSIMA_EXTRA_CMAKE_CXX_FLAGS="/MP /WX"
cmake_build_type: ${{ matrix.cmake-config }}
workspace: ${{ github.workspace }}
- name: Test
if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-test') }}
id: test
uses: eProsima/eProsima-CI/windows/colcon_test@v0
with:
colcon_meta_file: ${{ github.workspace }}\src\fastdds\.github\workflows\config\fastdds_test.meta
colcon_test_args: ${{ inputs.colcon-args }}
colcon_test_args_default: --event-handlers=console_direct+
ctest_args: ${{ inputs.ctest-args }}
<<<<<<< HEAD
ctest_args_default: --repeat until-pass:3 --timeout 300 --label-exclude "xfail"
packages_names: fastrtps
=======
packages_names: fastdds
>>>>>>> 22338f3fc (Refactor Fast DDS Ubuntu CI to include several tests (#4860))
workspace: ${{ github.workspace }}
test_report_artifact: ${{ format('test_report_{0}_{1}_{2}', inputs.label, github.job, join(matrix.*, '_')) }}
- name: Test summary
uses: eProsima/eProsima-CI/windows/junit_summary@v0
if: ${{ !cancelled() && !contains(github.event.pull_request.labels.*.name, 'no-test') }}
with:
junit_reports_dir: "${{ steps.test.outputs.ctest_results_path }}"
print_summary: 'True'
show_failed: 'True'
show_disabled: 'False'
show_skipped: 'False'