Skip to content

Commit

Permalink
Add macOS Github CI (#4100) (#4401)
Browse files Browse the repository at this point in the history
* Add macOS Github CI (#4100)

* Refs #20091: Add macOS Github CI

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Add summary table

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Remove commented step to install googletest

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Add hosts for Fast DDS testing of DNS features

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Fix Prepare colcon workspace step

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Disable DNS hosts edit

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Use CCache

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Add optional flags to junit_summary.py

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Use eProsima-CI

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Use Fast DDS input branch

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Print summary and only show failed list

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Do not update brew

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Do not upgrade python packages

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Try to use python 3.11

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Specify colcon workspace

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Set workspace for colcon test

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Use PR merge branch for windows and macos gh CI

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Adapt to changes in eProsima-CI

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Do not build with Wall

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Upgrade to macos-13 to get clang 15

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Do not use thirdparty

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Avoid enum-constexpr-conversion warning

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Correctly exclude DNS tests when necessary

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Apply Jesús suggestions

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Set eProsima-CI actions to v0

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

---------

Signed-off-by: EduPonz <eduardoponz@eprosima.com>
(cherry picked from commit 8cff0ca)

# Conflicts:
#	.github/workflows/windows-ci.yml
#	test/blackbox/CMakeLists.txt
Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Fix conflicts and adjust for 2.6.x

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

* Refs #20091: Apply suggestions

Signed-off-by: EduPonz <eduardoponz@eprosima.com>

---------

Signed-off-by: EduPonz <eduardoponz@eprosima.com>
Co-authored-by: Eduardo Ponz Segrelles <eduardoponz@eprosima.com>
  • Loading branch information
mergify[bot] and EduPonz authored Feb 23, 2024
1 parent dda3a02 commit a578abe
Show file tree
Hide file tree
Showing 8 changed files with 243 additions and 20 deletions.
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
53 changes: 53 additions & 0 deletions .github/workflows/mac-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
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.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.6.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.6.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.6.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@1.1
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.6.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.6.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.6'

- 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 @@ -50,4 +50,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.6.x' }}
fastdds_branch: ${{ inputs.fastdds_branch || github.ref || '2.6.x' }}
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

0 comments on commit a578abe

Please sign in to comment.