Refs #21886: TMP dumpbin hello_world.exe #14
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
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' |