Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[20091] Add macOS Github CI #4100

Merged
merged 25 commits into from
Feb 20, 2024
Merged
Show file tree
Hide file tree
Changes from 24 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
f921502
Refs #20091: Add macOS Github CI
EduPonz Dec 5, 2023
c292eba
Refs #20091: Add summary table
EduPonz Dec 5, 2023
ac18bab
Refs #20091: Remove commented step to install googletest
EduPonz Dec 5, 2023
412ca02
Refs #20091: Add hosts for Fast DDS testing of DNS features
EduPonz Dec 5, 2023
c0e9604
Refs #20091: Fix Prepare colcon workspace step
EduPonz Dec 5, 2023
455efcc
Refs #20091: Disable DNS hosts edit
EduPonz Dec 5, 2023
db769c4
Refs #20091: Use CCache
EduPonz Dec 5, 2023
7fbc075
Refs #20091: Add optional flags to junit_summary.py
EduPonz Dec 6, 2023
ebda49d
Refs #20091: Use eProsima-CI
EduPonz Dec 6, 2023
36056ca
Refs #20091: Use Fast DDS input branch
EduPonz Dec 6, 2023
eaac27a
Refs #20091: Print summary and only show failed list
EduPonz Dec 6, 2023
3964ee6
Refs #20091: Do not update brew
EduPonz Dec 6, 2023
4c70195
Refs #20091: Do not upgrade python packages
EduPonz Dec 6, 2023
88d13f4
Refs #20091: Try to use python 3.11
EduPonz Dec 6, 2023
cdeae91
Refs #20091: Specify colcon workspace
EduPonz Dec 6, 2023
5d13e02
Refs #20091: Set workspace for colcon test
EduPonz Dec 6, 2023
10dd583
Refs #20091: Use PR merge branch for windows and macos gh CI
EduPonz Dec 6, 2023
729aa5a
Refs #20091: Adapt to changes in eProsima-CI
EduPonz Feb 16, 2024
c10b978
Refs #20091: Do not build with Wall
EduPonz Feb 16, 2024
2928d68
Refs #20091: Upgrade to macos-13 to get clang 15
EduPonz Feb 16, 2024
9832b56
Refs #20091: Do not use thirdparty
EduPonz Feb 16, 2024
93aa937
Refs #20091: Avoid enum-constexpr-conversion warning
EduPonz Feb 17, 2024
3ecdb0c
Refs #20091: Correctly exclude DNS tests when necessary
EduPonz Feb 18, 2024
833debe
Refs #20091: Apply Jesús suggestions
EduPonz Feb 19, 2024
0b333e8
Refs #20091: Set eProsima-CI actions to v0
EduPonz Feb 19, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions .github/workflows/config/default_ci.meta
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ names:
- "-DBUILD_SHARED_LIBS=ON"
- "-DCOMPILE_EXAMPLES=ON"
- "-DEPROSIMA_BUILD_TESTS=ON"
- "-DEPROSIMA_EXTRA_CMAKE_CXX_FLAGS=/MP /WX"
- "-DFASTDDS_ENFORCE_LOG_INFO=ON"
- "-DFASTDDS_PIM_API_TESTS=ON"
- "-DFASTDDS_STATISTICS=ON"
Expand All @@ -20,10 +19,6 @@ names:
- "-DSHM_TRANSPORT_DEFAULT=ON"
- "-DSTRICT_REALTIME=OFF"
- "-DSYSTEM_TESTS=ON"
- "-DTHIRDPARTY_Asio=FORCE"
- "-DTHIRDPARTY_fastcdr=OFF"
- "-DTHIRDPARTY_TinyXML2=FORCE"
- "-DTHIRDPARTY_UPDATE=ON"
- "-DMEMORYCHECK_COMMAND_OPTIONS=-q --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=50 --log-fd=2 --error-exitcode=1"
- "-DMEMORYCHECK_SUPPRESSIONS_FILE=../../src/fastrtps/valgrind.supp"
googletest-distribution:
Expand Down
5 changes: 0 additions & 5 deletions .github/workflows/config/nightly.meta
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ names:
- "-DBUILD_SHARED_LIBS=ON"
- "-DCOMPILE_EXAMPLES=ON"
- "-DEPROSIMA_BUILD_TESTS=ON"
- "-DEPROSIMA_EXTRA_CMAKE_CXX_FLAGS=/MP /WX"
- "-DFASTDDS_ENFORCE_LOG_INFO=ON"
- "-DFASTDDS_PIM_API_TESTS=ON"
- "-DFASTDDS_STATISTICS=ON"
Expand All @@ -19,10 +18,6 @@ names:
- "-DSHM_TRANSPORT_DEFAULT=ON"
- "-DSTRICT_REALTIME=OFF"
- "-DSYSTEM_TESTS=ON"
- "-DTHIRDPARTY_Asio=FORCE"
- "-DTHIRDPARTY_fastcdr=OFF"
- "-DTHIRDPARTY_TinyXML2=FORCE"
- "-DTHIRDPARTY_UPDATE=ON"
- "-DMEMORYCHECK_COMMAND_OPTIONS=-q --tool=memcheck --leak-check=yes --show-reachable=yes --num-callers=50 --log-fd=2 --error-exitcode=1"
- "-DMEMORYCHECK_SUPPRESSIONS_FILE=../../src/fastrtps/valgrind.supp"
googletest-distribution:
Expand Down
56 changes: 56 additions & 0 deletions .github/workflows/mac-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Fast-DDS MacOS CI

on:
workflow_dispatch:
inputs:
label:
description: 'ID associated to the workflow'
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)'
type: string
required: true

push:
branches:
- 'master'
- '2.12.x'
- '2.10.x'
- '2.6.x'
paths-ignore:
- '**.md'
- '**.txt'
- '!**/CMakeLists.txt'
pull_request:
paths-ignore:
- '**.md'
- '**.txt'
- '!**/CMakeLists.txt'

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
mac-ci:
uses: ./.github/workflows/reusable-mac-ci.yml
if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-ci') }}
with:
label: ${{ inputs.label || 'mac-ci' }}
colcon-args: ${{ inputs.colcon-args }}
cmake-args: ${{ inputs.cmake-args }}
ctest-args: ${{ inputs.ctest-args }}
fastdds-branch: ${{ inputs.fastdds_branch || github.ref || 'master' }}
23 changes: 23 additions & 0 deletions .github/workflows/nightly-mac-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Fast-DDS MacOS CI (nightly)

on:
workflow_dispatch:
schedule:
- cron: '0 1 * * *'

jobs:
nightly-sec-mac-ci:
uses: ./.github/workflows/reusable-mac-ci.yml
with:
label: 'nightly-sec-mac-ci'
cmake-args: "-DSECURITY=ON"
ctest-args: "-LE xfail"
fastdds-branch: 'master'

nightly-nosec-mac-ci:
uses: ./.github/workflows/reusable-mac-ci.yml
with:
label: 'nightly-nosec-mac-ci'
cmake-args: "-DSECURITY=OFF"
ctest-args: "-LE xfail"
fastdds-branch: 'master'
154 changes: 154 additions & 0 deletions .github/workflows/reusable-mac-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
name: Fast-DDS MacOS CI reusable workflow

on:
workflow_call:
inputs:
label:
description: 'ID associated to the workflow'
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: bash

jobs:
reusable-mac-ci:
# As explained in https://github.com/actions/runner-images/tree/main?tab=readme-ov-file#available-images,
# *-latest images are not always the latest available versions. The minimum version of the macOS image
# with clang 15 is macos-13 (see
# https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md#language-and-runtime),
# so we'll use that one for now, as clang 15 is the supported compiler for Fast DDS in macOS.
# (see https://github.com/eProsima/Fast-DDS/blob/master/PLATFORM_SUPPORT.md#compilers)
runs-on: macos-13
if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-ci') }}
strategy:
fail-fast: false
matrix:
cmake-build-type:
- 'RelWithDebInfo'
steps:
- name: Sync eProsima/Fast-DDS repository
uses: eProsima/eProsima-CI/external/checkout@feature/fastdds_mac_ci_support
with:
path: src/fastrtps
ref: ${{ inputs.fastdds-branch }}

- uses: eProsima/eProsima-CI/external/setup-python@feature/fastdds_mac_ci_support
with:
python-version: '3.11'

- name: Get minimum supported version of CMake
uses: lukka/get-cmake@latest
with:
cmakeVersion: '3.22.6'

- name: Install brew dependencies
uses: eProsima/eProsima-CI/macos/install_brew_packages@feature/fastdds_mac_ci_support
with:
packages: llvm asio tinyxml2 openssl@3.0
update: false
upgrade: false

- name: Install colcon
uses: eProsima/eProsima-CI/multiplatform/install_colcon@feature/fastdds_mac_ci_support

- name: Install Python dependencies
uses: eProsima/eProsima-CI/multiplatform/install_python_packages@feature/fastdds_mac_ci_support
with:
packages: vcstool xmlschema
upgrade: false

- name: Setup CCache
uses: eProsima/eProsima-CI/external/setup-ccache-action@feature/fastdds_mac_ci_support

# TODO(eduponz): Update known hosts file for DNS resolver testing. NOTE: The runner cannot modify /etc/hosts.
# TODO(eduponz): Set up libp11 and SoftHSM. NOTE: using SoftHSM requires adding the runner to a group,
# which entails logout/login or rebooting the machine. This is not feasible in a CI environment.

- name: Prepare colcon workspace
id: colcon_ws_setup
run: |
# Nightly job
if [[ "${{ inputs.label }}" == *"nightly"* ]]
then
DEPENDS_REPOS_PATH="./src/fastrtps/.github/workflows/config/nightly_${{ inputs.fastdds-branch }}.repos"
if [ ! -f ${DEPENDS_REPOS_PATH} ]
then
DEPENDS_REPOS_PATH="./src/fastrtps/.github/workflows/config/nightly_master.repos"
fi
META_PATH="./src/fastrtps/.github/workflows/config/nightly.meta"

# Either PR or manual
else
DEPENDS_REPOS_PATH="./src/fastrtps/.github/workflows/config/default_ci_${{ inputs.fastdds-branch }}.repos"
if [ ! -f ${DEPENDS_REPOS_PATH} ]
then
DEPENDS_REPOS_PATH="./src/fastrtps/.github/workflows/config/default_ci_master.repos"
fi
META_PATH="./src/fastrtps/.github/workflows/config/default_ci.meta"
fi

echo "Selected repos files: ${DEPENDS_REPOS_PATH}"
cat ${DEPENDS_REPOS_PATH}

echo "Selected metas files: ${META_PATH}"
cp ${META_PATH} ci.meta
cat ci.meta

# Create source dir and download the sources
vcs import src --input ${DEPENDS_REPOS_PATH} --skip-existing

# TODO(eduponz): There is a warning in clang >= 16 regarding enum-constexpr-conversion:
# - Issue: https://github.com/boostorg/mpl/issues/69.
# We are disabling the warning for now, as the proposed solution does not fix the issue:
# - Not working solution: https://github.com/macports/macports-ports/pull/21839/files
- name: Colcon build
continue-on-error: false
uses: eProsima/eProsima-CI/multiplatform/colcon_build@feature/fastdds_mac_ci_support
with:
colcon_meta_file: ${{ github.workspace }}/ci.meta
colcon_build_args: ${{ inputs.colcon-args }}
cmake_args: ${{ inputs.cmake-args }}
cmake_args_default: -DCMAKE_CXX_FLAGS="-Werror -Wall -Wno-enum-constexpr-conversion"
cmake_build_type: ${{ matrix.cmake-build-type }}
workspace: ${{ github.workspace }}

- name: Colcon test
id: test
if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-test') }}
uses: eProsima/eProsima-CI/multiplatform/colcon_test@feature/fastdds_mac_ci_support
with:
colcon_test_args: ${{ inputs.colcon-args }}
colcon_test_args_default: --event-handlers=console_direct+
ctest_args: ${{ inputs.ctest-args }}
ctest_args_default: --repeat until-pass:3 --timeout 300 --label-exclude "xfail"
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/multiplatform/junit_summary@feature/fastdds_mac_ci_support
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'
5 changes: 4 additions & 1 deletion .github/workflows/reusable-windows-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ jobs:
with:
path: src/fastrtps
submodules: true
ref: ${{ inputs.fastdds-branch }}

- name: Get minimum supported version of CMake
uses: lukka/get-cmake@latest
Expand Down Expand Up @@ -160,7 +161,9 @@ jobs:
with:
colcon_meta_file: ${{ github.workspace }}/ci.meta
colcon_build_args: ${{ inputs.colcon-args }}
cmake_args_default: ${{ inputs.cmake-args }}
# The following Fast DDS CMake options need to be specified here instead of in the ci.meta file
# because they vary from platform to platform
cmake_args_default: ${{ inputs.cmake-args }} -DTHIRDPARTY_Asio=FORCE -DTHIRDPARTY_TinyXML2=FORCE -DTHIRDPARTY_fastcdr=OFF -DTHIRDPARTY_UPDATE=ON -DEPROSIMA_EXTRA_CMAKE_CXX_FLAGS="/MP /WX"
JesusPoderoso marked this conversation as resolved.
Show resolved Hide resolved
cmake_build_type: ${{ matrix.cmake-config }}
workspace: ${{ github.workspace }}

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/windows-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,4 @@ jobs:
colcon-args: ${{ inputs.colcon-args }}
cmake-args: ${{ inputs.cmake-args }}
ctest-args: ${{ inputs.ctest-args }}
fastdds_branch: ${{ inputs.fastdds_branch || github.base_ref || github.ref || 'master' }}
fastdds_branch: ${{ inputs.fastdds_branch || github.ref || 'master' }}
2 changes: 1 addition & 1 deletion test/blackbox/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ if(NOT LibP11_FOUND)
endif() # LibP11_FOUND

if(EPROSIMA_TEST_DNS_NOT_SET_UP)
set(dns_filter "-Discovery.ServerClientEnvironmentSetUpDNS")
set(dns_filter "-*ServerClientEnvironmentSetUpDNS*")
endif()

file(GLOB RTPS_BLACKBOXTESTS_TEST_SOURCE "common/RTPSBlackboxTests*.cpp")
Expand Down
14 changes: 7 additions & 7 deletions thirdparty/boost/include/boost/mpl/aux_/integral_wrapper.hpp
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@

// Copyright Aleksey Gurtovoy 2000-2006
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
// See http://www.boost.org/libs/mpl for documentation.
Expand Down Expand Up @@ -32,7 +32,7 @@
#if !defined(AUX_WRAPPER_INST)
# if BOOST_WORKAROUND(__MWERKS__, <= 0x2407)
# define AUX_WRAPPER_INST(value) AUX_WRAPPER_NAME< value >
# else
# else
# define AUX_WRAPPER_INST(value) BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::AUX_WRAPPER_NAME< value >
# endif
#endif
Expand All @@ -43,7 +43,7 @@ template< AUX_WRAPPER_PARAMS(N) >
struct AUX_WRAPPER_NAME
{
BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, value = N);
// agurt, 08/mar/03: SGI MIPSpro C++ workaround, have to #ifdef because some
// agurt, 08/mar/03: SGI MIPSpro C++ workaround, have to #ifdef because some
// other compilers (e.g. MSVC) are not particulary happy about it
#if BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
typedef struct AUX_WRAPPER_NAME type;
Expand Down Expand Up @@ -73,11 +73,11 @@ struct AUX_WRAPPER_NAME
typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value - 1)) ) prior;
#endif

// enables uniform function call syntax for families of overloaded
// enables uniform function call syntax for families of overloaded
// functions that return objects of both arithmetic ('int', 'long',
// 'double', etc.) and wrapped integral types (for an example, see
// 'double', etc.) and wrapped integral types (for an example, see
// "mpl/example/power.cpp")
BOOST_CONSTEXPR operator AUX_WRAPPER_VALUE_TYPE() const { return static_cast<AUX_WRAPPER_VALUE_TYPE>(this->value); }
BOOST_CONSTEXPR operator AUX_WRAPPER_VALUE_TYPE() const { return static_cast<AUX_WRAPPER_VALUE_TYPE>(this->value); }
};

#if !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
Expand Down
Loading