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 (backport #4100) #4400

Merged
merged 3 commits into from
Feb 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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 @@ -21,10 +20,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 @@ -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
54 changes: 54 additions & 0 deletions .github/workflows/mac-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
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:
- '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 || '2.10.x' }}
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: '2.10.x'

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: '2.10.x'
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@v0
with:
path: src/fastrtps
ref: ${{ inputs.fastdds-branch }}

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

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

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

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

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

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

# 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_2.10.x.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_2.10.x.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@v0
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@v0
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@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'
7 changes: 5 additions & 2 deletions .github/workflows/reusable-windows-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,12 @@ jobs:
with:
path: src/fastrtps
submodules: true
ref: ${{ inputs.fastdds-branch }}

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

- name: Install OpenSSL
uses: eProsima/eprosima-CI/windows/install_openssl@v0
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"
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 @@ -51,4 +51,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 || '2.10.x' }}
fastdds_branch: ${{ inputs.fastdds_branch || github.ref || '2.10.x' }}
2 changes: 1 addition & 1 deletion test/blackbox/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,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