Skip to content

Refs #21886: TMP dumpbin hello_world.exe #14

Refs #21886: TMP dumpbin hello_world.exe

Refs #21886: TMP dumpbin hello_world.exe #14

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-2022
strategy:
fail-fast: false
matrix:
cmake-config:
- 'RelWithDebInfo'
vs-toolset:
- 'v142'
steps:
- name: Sync eProsima/Fast-DDS repository
uses: eProsima/eProsima-CI/external/checkout@v0
with:
path: src/fastdds
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.22.6'
- 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\fastdds\fastdds.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\fastdds\.github\workflows\config\fastdds_test.repos
destination_workspace: src
skip_existing: 'true'
- name: Install VCTools for Dumpbin
shell: pwsh
run:
choco install visualstudio2019buildtools --package-parameters "--includeRecommended --includeOptional --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64" --no-progress
- name: Build
id: build
continue-on-error: false
uses: eProsima/eProsima-CI/windows/colcon_build@v0
with:
colcon_meta_file: ${{ github.workspace }}\src\fastdds\.github\workflows\config\fastdds_build.meta ${{ github.workspace }}\src\fastdds\.github\workflows\config\fastdds_test.meta
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 -DFASTDDS_EXAMPLE_TESTS=ON -DEPROSIMA_EXTRA_CMAKE_CXX_FLAGS="/MP /WX"
cmake_build_type: ${{ matrix.cmake-config }}
workspace: ${{ github.workspace }}
- name: Run Dumpbin
"& C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\dumpbin.exe ${{ github.workspace }}\build\fastdds\examples\cpp\hello_world\Release\hello_world.exe"
- 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 }}
packages_names: fastdds
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'