Add Ubuntu weekly ci (#5038) #12
Workflow file for this run
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-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.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\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\fastdds_test.repos | ||
destination_workspace: src | ||
skip_existing: 'true' | ||
- name: Prepare build meta file | ||
<<<<<<< HEAD | ||
run: | | ||
$build_meta_file = '${{ github.workspace }}\src\fastrtps\.github\workflows\config\fastdds_build.meta' | ||
$test_meta_file = '${{ github.workspace }}\src\fastrtps\.github\workflows\config\fastdds_test.meta' | ||
$build_test_meta_file = '${{ github.workspace }}\src\fastrtps\.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 | ||
======= | ||
uses: eProsima/eProsima-CI/windows/merge_yaml_metas@v0 | ||
with: | ||
metas: "@('${{ github.workspace }}/src/fastdds/.github/workflows/config/fastdds_build.meta', '${{ github.workspace }}/src/fastdds/.github/workflows/config/fastdds_test.meta')" | ||
path: '${{ github.workspace }}/src/fastdds/.github/workflows/config/fastdds_build_test.meta' | ||
>>>>>>> e6773fb0b (Add Ubuntu weekly ci (#5038)) | ||
- name: Build | ||
id: build | ||
continue-on-error: false | ||
uses: eProsima/eProsima-CI/windows/colcon_build@v0 | ||
with: | ||
colcon_meta_file: ${{ github.workspace }}\src\fastrtps\.github\workflows\config\fastdds_build_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 -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\fastrtps\.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: fastrtps | ||
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' |