CMake Install Tests #114
This file contains hidden or 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: CMake Install Tests | |
on: | |
workflow_dispatch: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
permissions: | |
contents: read | |
jobs: | |
windows_2022_vcpkg_submodule: | |
name: Windows 2022 vcpkg submodule versions cxx17 (static libs - dll) | |
runs-on: windows-2022 | |
env: | |
# Set to the latest version of cmake 3.x | |
CMAKE_VERSION: '3.31.6' | |
# cxx17 is the default for windows-2022 | |
CXX_STANDARD: '17' | |
CMAKE_EXTRA_ARGS: "-DWITH_STL=CXX17 -DOTELCPP_REQUIRE_LOCAL_DEPENDENCIES=ON" | |
steps: | |
- name: Harden the runner (Audit all outbound calls) | |
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 | |
with: | |
egress-policy: audit | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: 'recursive' | |
- name: Build dependencies with vcpkg submodule | |
run: | | |
./ci/setup_cmake.ps1 | |
./ci/setup_windows_ci_environment.ps1 | |
- name: Run Tests | |
run: ./ci/do_ci.ps1 cmake.install.test | |
- name: Run DLL Tests | |
run: ./ci/do_ci.ps1 cmake.dll.install.test | |
windows_2019_vcpkg_submodule_min_cmake: | |
name: Windows 2019 vcpkg submodule versions minimum cmake cxx14 (static libs) | |
runs-on: windows-2019 | |
env: | |
# cmake 3.15 is the minimum for windows builds (See https://github.com/open-telemetry/opentelemetry-cpp/pull/3349#discussion_r2030319430) | |
CMAKE_VERSION: '3.15.0' | |
# cxx14 is the default for windows-2019 | |
CXX_STANDARD: '14' | |
CMAKE_EXTRA_ARGS: "-DWITH_GSL=ON -DOTELCPP_REQUIRE_LOCAL_DEPENDENCIES=ON" | |
steps: | |
- name: Harden the runner (Audit all outbound calls) | |
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 | |
with: | |
egress-policy: audit | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: 'recursive' | |
- name: Build dependencies with vcpkg submodule | |
run: | | |
./ci/setup_cmake.ps1 | |
./ci/setup_windows_ci_environment.ps1 | |
- name: Run Tests | |
run: ./ci/do_ci.ps1 cmake.install.test | |
ubuntu_2404_system_packages: | |
name: Ubuntu 24.04 apt packages cxx17 (static libs - shared libs) | |
runs-on: ubuntu-24.04 | |
env: | |
INSTALL_TEST_DIR: '/home/runner/install_test' | |
# CMake 3.28 is apt package version for Ubuntu 24.04 | |
CMAKE_VERSION: '3.28.3' | |
# cxx17 is the default for Ubuntu 24.04 | |
CXX_STANDARD: '17' | |
CMAKE_EXTRA_ARGS: "-DOTELCPP_REQUIRE_LOCAL_DEPENDENCIES=ON" | |
BUILD_TYPE: 'Debug' | |
steps: | |
- name: Harden the runner (Audit all outbound calls) | |
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 | |
with: | |
egress-policy: audit | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: 'recursive' | |
- name: Setup CI Environment | |
run: | | |
sudo -E ./ci/setup_ci_environment.sh | |
sudo -E ./ci/setup_cmake.sh | |
- name: Install Dependencies | |
run: | | |
sudo -E apt-get update | |
sudo -E apt-get install -y libabsl-dev libcurl4-openssl-dev zlib1g-dev nlohmann-json3-dev libprotobuf-dev libgrpc++-dev protobuf-compiler protobuf-compiler-grpc | |
- name: Run Tests (static libs) | |
env: | |
BUILD_SHARED_LIBS: 'OFF' | |
run: ./ci/do_ci.sh cmake.install.test | |
- name: Run Tests (shared libs) | |
env: | |
BUILD_SHARED_LIBS: 'ON' | |
run: ./ci/do_ci.sh cmake.install.test | |
ubuntu_2404_all_fetch: | |
name: Ubuntu 24.04 fetch all dependencies (static libs - shared libs - opentracing shim) | |
runs-on: ubuntu-24.04 | |
env: | |
INSTALL_TEST_DIR: '/home/runner/install_test' | |
# CMake 3.28 is apt package version for Ubuntu 24.04 | |
CMAKE_VERSION: '3.28.3' | |
# The default cxx standard for Ubuntu 24.04 | |
CXX_STANDARD: '17' | |
CMAKE_EXTRA_ARGS: "-DOTELCPP_FORCE_FETCH_DEPENDENCIES=ON" | |
BUILD_TYPE: 'Debug' | |
steps: | |
- name: Harden the runner (Audit all outbound calls) | |
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 | |
with: | |
egress-policy: audit | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
# Don't checkout the submodules. | |
submodules: false | |
- name: Setup CI Environment | |
run: | | |
sudo -E ./ci/setup_ci_environment.sh | |
sudo -E ./ci/setup_cmake.sh | |
- name: Run Tests (static libs) | |
env: | |
BUILD_SHARED_LIBS: 'OFF' | |
run: ./ci/do_ci.sh cmake.install.test | |
- name: Run Tests (shared libs) | |
env: | |
BUILD_SHARED_LIBS: 'ON' | |
run: ./ci/do_ci.sh cmake.install.test | |
- name: Run OpenTracing Shim Test | |
run: ./ci/do_ci.sh cmake.opentracing_shim.install.test | |
ubuntu_2404_latest: | |
name: Ubuntu 24.04 latest versions cxx20 (static libs) | |
runs-on: ubuntu-24.04 | |
env: | |
INSTALL_TEST_DIR: '/home/runner/install_test' | |
# Set to the latest version of cmake 3.x | |
CMAKE_VERSION: '3.31.6' | |
# Set to the latest cxx standard supported by opentelemetry-cpp | |
CXX_STANDARD: '20' | |
CMAKE_EXTRA_ARGS: "-DWITH_STL=CXX20" | |
# Versions below set to the latest version available | |
# The abseil and protobuf versions are taken from | |
# the grpc submodules at the GRPC_VERSION tag | |
GOOGLETEST_VERSION: '1.16.0' | |
ABSEIL_CPP_VERSION: '20240722.1' | |
PROTOBUF_VERSION: '29.0' | |
GRPC_VERSION: 'v1.71.0' | |
BUILD_TYPE: 'Debug' | |
steps: | |
- name: Harden the runner (Audit all outbound calls) | |
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 | |
with: | |
egress-policy: audit | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: 'recursive' | |
- name: Setup CI Environment | |
run: | | |
sudo -E ./ci/setup_ci_environment.sh | |
sudo -E ./ci/setup_cmake.sh | |
- name: Install Dependencies | |
run: | | |
sudo -E ./ci/install_abseil.sh | |
sudo -E ./ci/setup_googletest.sh | |
sudo -E ./ci/install_protobuf.sh | |
sudo -E ./ci/setup_grpc.sh -r $GRPC_VERSION -s $CXX_STANDARD -p protobuf -p abseil-cpp | |
- name: Run Tests (static libs) | |
env: | |
BUILD_SHARED_LIBS: 'OFF' | |
run: ./ci/do_ci.sh cmake.install.test | |
ubuntu_2204_stable: | |
name: Ubuntu 22.04 stable versions cxx17 (static libs - shared libs) | |
runs-on: ubuntu-22.04 | |
env: | |
INSTALL_TEST_DIR: '/home/runner/install_test' | |
# CMake 3.22 is the apt package version for Ubuntu 22.04 | |
CMAKE_VERSION: '3.22.0' | |
CXX_STANDARD: '17' | |
CMAKE_EXTRA_ARGS: "-DWITH_STL=CXX17" | |
# These are stable versions tested in the main ci workflow | |
# and defaults in the devcontainer | |
GOOGLETEST_VERSION: '1.14.0' | |
ABSEIL_CPP_VERSION: '20230125.3' | |
PROTOBUF_VERSION: '23.3' | |
GRPC_VERSION: 'v1.55.0' | |
BUILD_TYPE: 'Debug' | |
steps: | |
- name: Harden the runner (Audit all outbound calls) | |
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 | |
with: | |
egress-policy: audit | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: 'recursive' | |
- name: Setup CI Environment | |
run: | | |
sudo -E ./ci/setup_ci_environment.sh | |
sudo -E ./ci/setup_cmake.sh | |
- name: Install Dependencies | |
run: | | |
sudo -E ./ci/install_abseil.sh | |
sudo -E ./ci/setup_googletest.sh | |
sudo -E ./ci/install_protobuf.sh | |
sudo -E ./ci/setup_grpc.sh -r $GRPC_VERSION -s $CXX_STANDARD -p protobuf -p abseil-cpp | |
- name: Run Tests (static libs) | |
env: | |
BUILD_SHARED_LIBS: 'OFF' | |
run: ./ci/do_ci.sh cmake.install.test | |
- name: Run Tests (shared libs) | |
env: | |
BUILD_SHARED_LIBS: 'ON' | |
run: ./ci/do_ci.sh cmake.install.test | |
ubuntu_2204_minimum: | |
name: Ubuntu 22.04 minimum versions cxx14 (static libs - shared libs) | |
runs-on: ubuntu-22.04 | |
env: | |
INSTALL_TEST_DIR: '/home/runner/install_test' | |
# Set to the current minimum version of cmake | |
CMAKE_VERSION: '3.14.0' | |
# cxx14 is the default for Ubuntu 22.04 | |
CXX_STANDARD: '14' | |
CMAKE_EXTRA_ARGS: "-DWITH_GSL=ON" | |
# This is the apt package version of googletest for Ubuntu 22.04 | |
GOOGLETEST_VERSION: '1.11.0' | |
# These are minimum versions tested in the main ci workflow | |
ABSEIL_CPP_VERSION: '20220623.2' | |
PROTOBUF_VERSION: '21.12' | |
GRPC_VERSION: 'v1.49.2' | |
BUILD_TYPE: 'Debug' | |
steps: | |
- name: Harden the runner (Audit all outbound calls) | |
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 | |
with: | |
egress-policy: audit | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: 'recursive' | |
- name: Setup CI Environment | |
run: | | |
sudo -E ./ci/setup_ci_environment.sh | |
sudo -E ./ci/setup_cmake.sh | |
- name: Install Dependencies | |
run: | | |
sudo -E apt-get install -y libcurl4-openssl-dev zlib1g-dev nlohmann-json3-dev | |
sudo -E ./ci/install_abseil.sh | |
sudo -E ./ci/setup_googletest.sh | |
sudo -E ./ci/install_protobuf.sh | |
sudo -E ./ci/setup_grpc.sh -r $GRPC_VERSION -s $CXX_STANDARD -p protobuf -p abseil-cpp | |
- name: Run Tests (static libs) | |
env: | |
BUILD_SHARED_LIBS: 'OFF' | |
run: ./ci/do_ci.sh cmake.install.test | |
- name: Run Tests (shared libs) | |
env: | |
BUILD_SHARED_LIBS: 'ON' | |
run: ./ci/do_ci.sh cmake.install.test | |
ubuntu_2404_conan_stable: | |
name: Ubuntu 24.04 conan stable versions cxx17 (static libs - shared libs - opentracing shim) | |
runs-on: ubuntu-24.04 | |
env: | |
INSTALL_TEST_DIR: '/home/runner/install_test' | |
# CMake 3.28 is apt package version for Ubuntu 24.04 | |
CMAKE_VERSION: '3.28.3' | |
CXX_STANDARD: '17' | |
CMAKE_EXTRA_ARGS: "-DOTELCPP_REQUIRE_LOCAL_DEPENDENCIES=ON" | |
CMAKE_TOOLCHAIN_FILE: /home/runner/conan/build/Debug/generators/conan_toolchain.cmake | |
BUILD_TYPE: 'Debug' | |
steps: | |
- name: Harden the runner (Audit all outbound calls) | |
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 | |
with: | |
egress-policy: audit | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: false | |
- name: Get required submodules | |
run: | | |
git submodule update --init --depth 1 third_party/opentelemetry-proto | |
- name: Install Conan | |
run: | | |
python3 -m pip install pip==25.0.1 | |
pip install "conan==2.15.1" | |
conan profile detect --force | |
- name: Install or build all dependencies with Conan | |
run: | | |
sudo -E ./ci/setup_cmake.sh | |
conan install install/conan/conanfile_stable.txt --build=missing -of /home/runner/conan -s build_type=${BUILD_TYPE} -s compiler.cppstd=${CXX_STANDARD} | |
- name: Run Tests (static libs) | |
env: | |
BUILD_SHARED_LIBS: 'OFF' | |
run: ./ci/do_ci.sh cmake.install.test | |
- name: Run Tests (shared libs) | |
env: | |
BUILD_SHARED_LIBS: 'ON' | |
run: ./ci/do_ci.sh cmake.install.test | |
- name: verify pkgconfig packages | |
run: | | |
export PKG_CONFIG_PATH=$INSTALL_TEST_DIR/lib/pkgconfig:$PKG_CONFIG_PATH | |
./ci/verify_packages.sh | |
- name: Run OpenTracing Shim Test | |
run: ./ci/do_ci.sh cmake.opentracing_shim.install.test | |
ubuntu_2404_conan_latest: | |
name: Ubuntu 24.04 conan latest versions cxx17 (static libs - opentracing shim) | |
runs-on: ubuntu-24.04 | |
env: | |
INSTALL_TEST_DIR: '/home/runner/install_test' | |
# Set to the latest version of cmake 3.x | |
CMAKE_VERSION: '3.31.6' | |
CXX_STANDARD: '17' | |
CMAKE_EXTRA_ARGS: "-DOTELCPP_REQUIRE_LOCAL_DEPENDENCIES=ON" | |
CMAKE_TOOLCHAIN_FILE: /home/runner/conan/build/Debug/generators/conan_toolchain.cmake | |
BUILD_TYPE: 'Debug' | |
steps: | |
- name: Harden the runner (Audit all outbound calls) | |
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 | |
with: | |
egress-policy: audit | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: false | |
- name: Get required submodules | |
run: | | |
git submodule update --init --depth 1 third_party/opentelemetry-proto | |
- name: Install Conan | |
run: | | |
python3 -m pip install pip==25.0.1 | |
pip install "conan==2.15.1" | |
conan profile detect --force | |
- name: Install or build all dependencies with Conan | |
run: | | |
sudo -E ./ci/setup_cmake.sh | |
conan install install/conan/conanfile_latest.txt --build=missing -of /home/runner/conan -s build_type=${BUILD_TYPE} -s compiler.cppstd=${CXX_STANDARD} | |
- name: Run Tests (static libs) | |
env: | |
BUILD_SHARED_LIBS: 'OFF' | |
run: ./ci/do_ci.sh cmake.install.test | |
- name: verify pkgconfig packages | |
run: | | |
export PKG_CONFIG_PATH=$INSTALL_TEST_DIR/lib/pkgconfig:$PKG_CONFIG_PATH | |
./ci/verify_packages.sh | |
- name: Run OpenTracing Shim Test | |
run: ./ci/do_ci.sh cmake.opentracing_shim.install.test | |
macos_14_conan_stable: | |
name: macOS 14 conan stable versions cxx17 (static libs) | |
runs-on: macos-14 | |
env: | |
INSTALL_TEST_DIR: '/Users/runner/install_test' | |
CMAKE_VERSION: '3.28.3' | |
CXX_STANDARD: '17' | |
CMAKE_EXTRA_ARGS: "-DOTELCPP_REQUIRE_LOCAL_DEPENDENCIES=ON" | |
CMAKE_TOOLCHAIN_FILE: '/Users/runner/conan/build/Debug/generators/conan_toolchain.cmake' | |
BUILD_TYPE: 'Debug' | |
steps: | |
- name: Harden the runner (Audit all outbound calls) | |
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 | |
with: | |
egress-policy: audit | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: false | |
- name: Get required submodules | |
run: | | |
git submodule update --init --depth 1 third_party/opentelemetry-proto | |
- name: Install Conan and tools | |
run: | | |
brew install conan autoconf automake libtool coreutils | |
./ci/setup_cmake_macos.sh | |
conan profile detect --force | |
- name: Install or build all dependencies with Conan | |
run: conan install install/conan/conanfile_stable.txt --build=missing -of /Users/runner/conan -s build_type=${BUILD_TYPE} -s compiler.cppstd=${CXX_STANDARD} | |
- name: Run Tests (static libs) | |
env: | |
BUILD_SHARED_LIBS: 'OFF' | |
run: ./ci/do_ci.sh cmake.install.test | |
macos_14_brew_packages: | |
name: macOS 14 brew latest versions cxx17 (static libs) | |
runs-on: macos-14 | |
env: | |
INSTALL_TEST_DIR: '/Users/runner/install_test' | |
# Set to the latest version of cmake 3.x | |
CMAKE_VERSION: '3.31.6' | |
CXX_STANDARD: '17' | |
CMAKE_EXTRA_ARGS: "-DOTELCPP_REQUIRE_LOCAL_DEPENDENCIES=ON" | |
BUILD_TYPE: 'Debug' | |
steps: | |
- name: Harden the runner (Audit all outbound calls) | |
uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 | |
with: | |
egress-policy: audit | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: false | |
- name: Get required submodules | |
run: | | |
git submodule update --init --depth 1 third_party/opentelemetry-proto | |
- name: Install Dependencies with Homebrew | |
run: | | |
./ci/setup_cmake_macos.sh | |
brew install coreutils | |
brew install googletest | |
brew install google-benchmark | |
brew install zlib | |
brew install abseil | |
brew install protobuf | |
brew install grpc | |
brew install nlohmann-json | |
brew install prometheus-cpp | |
- name: Run Tests (static libs) | |
env: | |
BUILD_SHARED_LIBS: 'OFF' | |
run: ./ci/do_ci.sh cmake.install.test |