Skip to content
Draft
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
52 changes: 8 additions & 44 deletions .github/workflows/test-runner.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,15 +88,17 @@ jobs:
execute-integration-tests: true
secrets: inherit
windows-bazel:
# Disabled
if: false
# Build the full matrix only on push events to the default branch, or
# when PR gets the has a `gha:full-build` label, or when it had the
# label already and it gets a new commit.
if: |-
${{
github.event_name == 'schedule' ||
github.event_name == 'push' ||
contains(github.event.pull_request.labels.*.name, 'gha:full-build')
}}
# if: |-
# ${{
# github.event_name == 'schedule' ||
# github.event_name == 'push' ||
# contains(github.event.pull_request.labels.*.name, 'gha:full-build')
# }}
name: Windows-Bazel
needs: [pre-flight]
uses: ./.github/workflows/windows-bazel.yml
Expand Down Expand Up @@ -127,8 +129,6 @@ jobs:
execute-integration-tests: true
secrets: inherit
windows-cmake:
# Disabled
if: false
name: Windows-CMake
needs: [pre-flight]
uses: ./.github/workflows/windows-cmake.yml
Expand All @@ -147,39 +147,3 @@ jobs:
vcpkg-cache-mode: 'readwrite'
execute-integration-tests: true
secrets: inherit
notify:
name: Notify-Google-Chat
# Wait until all the other jobs have completed.
needs:
# macos-bazel is disabled
# macos-cmake is disabled
- windows-bazel
# windows-cmake is disabled is disabled
# Run even if the other jobs failed or were skipped.
if: always()
runs-on: ubuntu-latest
steps:
- name: Notify Google Chat
shell: bash
run: |
event_name="${{ github.event_name }}"
case "${event_name}" in
schedule)
;;
push)
;;
*)
exit 0
;;
esac
failure="${{ contains(needs.*.result, 'failure') }}"
cancelled="${{ contains(needs.*.result, 'cancelled') }}"
status=""
# Report whether any of the jobs failed or were cancelled.
if [[ "${cancelled}" == "true" ]]; then status="cancelled"; fi
if [[ "${failure}" == "true" ]]; then status="failure"; fi
# Exit early if there is nothing interesting to report.
if [[ -z "${status}" ]]; then exit 0; fi
printf '{"text": "GHA Build %s %s/%s/actions/runs/%s"}' \
"${status}" "${{ github.server_url }}" "${{ github.repository }}" "${{ github.run_id }}" |
curl -fsX POST -o /dev/null -d@- -H "Content-Type: application/json; charset=UTF-8" '${{ secrets.CLOUD_CPP_BUILD_ALERTS_WEBHOOK }}'
9 changes: 4 additions & 5 deletions .github/workflows/windows-cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
msvc: [ msvc-2022 ]
build_type: [ Release ]
arch: [ x64 ]
shard: [ Core3, Core4 ]
shard: [ Core1, Core2, Core3, Core4, Core5, Compute, AIPlatform, Shard1, Shard2, Shard3, Shard4, Shard5, Other ]
exclude:
# Also skip shards (Compute and Other) that contain only generated code.
- exclude-from-full-trick: ${{ ! inputs.full-matrix }}
Expand Down Expand Up @@ -103,6 +103,7 @@ jobs:
dataproc
discoveryengine
monitoring
opentelemetry
retail
sql
dialogflow_cx
Expand Down Expand Up @@ -209,6 +210,8 @@ jobs:
universe_domain
)
shard5_features=(
asset
channel
video
datacatalog
iam
Expand Down Expand Up @@ -269,10 +272,6 @@ jobs:
skipped_features+=("${shard3_features[@]}")
skipped_features+=("${shard4_features[@]}")
skipped_features+=("${shard5_features[@]}")
# We use vcpkg in this build, which ships with Protobuf v21.x.
# Both `asset` and `channel` require Protobuf >= 23.x to compile on
# Windows.
skipped_features+=(asset channel)
skipped="$(printf ",-%s" "${skipped_features[@]}")"
echo "features=__ga_libraries__,__experimental_libraries__,${skipped:1}" >> "${GITHUB_OUTPUT}"
fi
Expand Down
4 changes: 4 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,10 @@ if (APPLE
" cmake -DGOOGLE_CLOUD_CPP_ENABLE_MACOS_OPENSSL_CHECK=OFF ...")
endif ()

if (WIN32)
add_definitions(-DNOMINMAX)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

Adding -DNOMINMAX is a crucial step for Windows compatibility in C++ projects. This prevents conflicts between the min/max macros defined in windows.h and std::min/std::max from the C++ standard library, which can lead to unexpected compilation errors or behavior.

endif ()

# If ccache is installed use it for the build.
option(GOOGLE_CLOUD_CPP_ENABLE_CCACHE "Automatically use ccache if available"
OFF)
Expand Down
2 changes: 1 addition & 1 deletion ci/etc/vcpkg-version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2025.10.17
3895230f38e498525f2560a281223d12066fa74a
3 changes: 2 additions & 1 deletion ci/gha/builds/lib/cmake.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ function cmake::common_args() {
fi
local args
args=(
-DCMAKE_CXX_STANDARD=17

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Setting CMAKE_CXX_STANDARD to 17 explicitly ensures that the project is built with C++17 features. This is a good practice for modern C++ development and aligns with the repository's stated support for C++14 as a minimum version, effectively upgrading the standard used in this build configuration.

References
  1. The repository style guide states that C++14 is the minimum supported C++ standard version. Upgrading to C++17 is a positive step towards modern C++ practices. (link)

-DGOOGLE_CLOUD_CPP_ENABLE_CCACHE=OFF
-DGOOGLE_CLOUD_CPP_ENABLE_WERROR=ON
-GNinja
Expand All @@ -58,7 +59,7 @@ function cmake::common_args() {
if [[ -n "${VCPKG_TRIPLET:-}" ]]; then
args+=("-DVCPKG_TARGET_TRIPLET=${VCPKG_TRIPLET}")
fi
args+=("-DVCPKG_OVERLAY_PORTS=ci/gha/builds/vcpkg-overlays")
args+=("-DVCPKG_OVERLAY_PORTS=ci\gha\builds\vcpkg-overlays")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

Changing the path separator from / to \ for VCPKG_OVERLAY_PORTS is essential for correct functionality on Windows systems, as Windows uses backslashes for directory paths. This ensures that vcpkg can correctly locate the overlay ports.

printf "%s\n" "${args[@]}"
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
diff --git a/cmake/opentracing-cpp.cmake b/cmake/opentracing-cpp.cmake
index f014ecd..fd8898a 100644
--- a/cmake/opentracing-cpp.cmake
+++ b/cmake/opentracing-cpp.cmake
@@ -1,7 +1,11 @@
# Copyright The OpenTelemetry Authors
# SPDX-License-Identifier: Apache-2.0

-find_package(OpenTracing CONFIG QUIET)
+find_package(OpenTracing CONFIG REQUIRED)
+if(NOT TARGET OpenTracing::opentracing AND TARGET OpenTracing::opentracing-static)
+ add_library(OpenTracing::opentracing ALIAS OpenTracing::opentracing-static)
+endif()
+
set(OpenTracing_PROVIDER "find_package")

if(NOT OpenTracing_FOUND)
26 changes: 16 additions & 10 deletions ci/gha/builds/vcpkg-overlays/opentelemetry-cpp/portfile.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,11 @@ vcpkg_from_github(
REF
"v${VERSION}"
SHA512
c93005c9b24b358a9998141f6c7fd9675778731775dacaad18f0e81117fd00aaabff371c04cf96688a9c86117727181052a141d961d4db28fc457b454351c570
6dc0357d8b3410852d3f970f72b8bec59dba9d6c533ca600432102e65de161903bd9170d98cef7ff0af5191309577ffd2a69ccd004b840914a910a6a282204e4
HEAD_REF
main
PATCHES
# Missing find_dependency for Abseil
add-missing-find-dependency.patch)
fix-target_link.patch)

vcpkg_check_features(
OUT_FEATURE_OPTIONS
Expand All @@ -29,6 +28,8 @@ vcpkg_check_features(
WITH_PROMETHEUS
elasticsearch
WITH_ELASTICSEARCH
otlp-file
WITH_OTLP_FILE
otlp-http
WITH_OTLP_HTTP
otlp-grpc
Expand All @@ -37,22 +38,26 @@ vcpkg_check_features(
WITH_GENEVA
user-events
WITH_USER_EVENTS
opentracing
WITH_OPENTRACING
INVERTED_FEATURES
user-events
BUILD_TRACEPOINTS)

# opentelemetry-proto is a third party submodule and opentelemetry-cpp release
# did not pack it.
if (WITH_OTLP_GRPC OR WITH_OTLP_HTTP)
set(OTEL_PROTO_VERSION "1.3.1")
if (WITH_OTLP_FILE
OR WITH_OTLP_GRPC
OR WITH_OTLP_HTTP)
set(OTEL_PROTO_VERSION "1.6.0")
vcpkg_download_distfile(
ARCHIVE
URLS
"https://github.com/open-telemetry/opentelemetry-proto/archive/v${OTEL_PROTO_VERSION}.tar.gz"
FILENAME
"opentelemetry-proto-${OTEL_PROTO_VERSION}.tar.gz"
SHA512
8c75e4ff79c4b5b251e0ec8ece92ec901d70ec601644505ffdd137fb728daac91fd9203e1f448500124906737d91d80f10b694977688c655418b94f61c828d06
0e72e0c32d2d699d7a832a4c57a9dbe60e844d4c4e8d7b39eb45e4282cde89fccfeef893eae70b9d018643782090a7228c3ef60863b00747498e80f0cf1db8ae
)

vcpkg_extract_source_archive(src ARCHIVE "${ARCHIVE}")
Expand All @@ -62,13 +67,13 @@ if (WITH_OTLP_GRPC OR WITH_OTLP_HTTP)
# Create empty .git directory to prevent opentelemetry from cloning it
# during build time
file(MAKE_DIRECTORY "${SOURCE_PATH}/third_party/opentelemetry-proto/.git")
list(APPEND FEATURE_OPTIONS -DCMAKE_CXX_STANDARD=14)
list(
APPEND
FEATURE_OPTIONS
"-DgRPC_CPP_PLUGIN_EXECUTABLE=${CURRENT_HOST_INSTALLED_DIR}/tools/grpc/grpc_cpp_plugin${VCPKG_HOST_EXECUTABLE_SUFFIX}"
)
endif ()
list(APPEND FEATURE_OPTIONS -DCMAKE_CXX_STANDARD=17 -DWITH_STL=CXX17)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Explicitly setting CMAKE_CXX_STANDARD=17 and WITH_STL=CXX17 ensures consistency in the C++ standard used for the OpenTelemetry-CPP port. This aligns with modern C++ practices and the project's C++ standard requirements.

References
  1. The repository style guide states that C++14 is the minimum supported C++ standard version. Using C++17 here is an appropriate upgrade. (link)


set(OPENTELEMETRY_CPP_EXTERNAL_COMPONENTS "OFF")

Expand Down Expand Up @@ -111,15 +116,16 @@ vcpkg_cmake_configure(
-DBUILD_TESTING=OFF
-DWITH_EXAMPLES=OFF
-DOPENTELEMETRY_INSTALL=ON
-DWITH_STL=CXX14
-DWITH_ABSEIL=ON
-DWITH_BENCHMARK=OFF
-DCMAKE_CXX_STANDARD=17
-DWITH_STL=CXX17
-DOPENTELEMETRY_EXTERNAL_COMPONENT_PATH=${OPENTELEMETRY_CPP_EXTERNAL_COMPONENTS}
${FEATURE_OPTIONS}
MAYBE_UNUSED_VARIABLES
WITH_GENEVA
WITH_USER_EVENTS
BUILD_TRACEPOINTS)
BUILD_TRACEPOINTS
gRPC_CPP_PLUGIN_EXECUTABLE)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Adding gRPC_CPP_PLUGIN_EXECUTABLE to MAYBE_UNUSED_VARIABLES is a good practice to prevent CMake warnings about unused variables, which can help keep the build output clean and focused on actual issues.


vcpkg_cmake_install()
vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/${PORT}")
Expand Down
108 changes: 108 additions & 0 deletions ci/gha/builds/vcpkg-overlays/opentelemetry-cpp/vcpkg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
{
"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json",
"name": "opentelemetry-cpp",
"version-semver": "1.23.0",
"description": [
"OpenTelemetry is a collection of tools, APIs, and SDKs.",
"You use it to instrument, generate, collect, and export telemetry data (metrics, logs, and traces) for analysis in order to understand your software's performance and behavior."
],
"homepage": "https://github.com/open-telemetry/opentelemetry-cpp",
"license": "Apache-2.0",
"dependencies": [
"abseil",
"nlohmann-json",
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
],
"features": {
"elasticsearch": {
"description": "Whether to include the Elasticsearch Client in the SDK",
"dependencies": [
{
"name": "curl",
"default-features": false
}
]
},
"etw": {
"description": "Whether to include the ETW Exporter in the SDK",
"supports": "windows"
},
"geneva": {
"description": "Whether to include the Geneva Exporter from the opentelemetry-cpp-contrib repository",
"dependencies": [
{
"name": "opentelemetry-cpp",
"features": [
"etw"
],
"platform": "windows"
},
"opentelemetry-cpp-contrib-version"
]
},
"opentracing": {
"description": "Whether to include the Opentracing shim",
"dependencies": [
"opentracing"
]
},
"otlp-file": {
"description": "Whether to include the OpenTelemetry Protocol to File exporter in the SDK",
"supports": "!uwp",
"dependencies": [
"protobuf"
]
},
"otlp-grpc": {
"description": "Whether to include the OTLP gRPC exporter in the SDK",
"dependencies": [
"grpc",
{
"name": "grpc",
"host": true
}
]
},
"otlp-http": {
"description": "Whether to include the OpenTelemetry Protocol over HTTP in the SDK",
"dependencies": [
"curl",
"protobuf"
]
},
"prometheus": {
"description": "Whether to include the Prometheus Client in the SDK",
"dependencies": [
"prometheus-cpp"
]
},
"user-events": {
"description": "Whether to include the User Events Exporter from the opentelemetry-cpp-contrib repository",
"supports": "linux",
"dependencies": [
"libeventheader-tracepoint",
"libtracepoint",
{
"name": "opentelemetry-cpp",
"features": [
"otlp-http"
]
},
"opentelemetry-cpp-contrib-version"
]
},
"zipkin": {
"description": "Whether to include the Zipkin exporter in the SDK",
"dependencies": [
"curl"
]
}
}
}
1 change: 1 addition & 0 deletions ci/kokoro/windows/build.bat
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ REM Configure the environment to use MSVC %MSVC_VERSION% and then switch to Powe
call "%ProgramFiles(x86)%\Microsoft Visual Studio\%MSVC_VERSION%\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
set "BAZEL_VC=%ProgramFiles(x86)%\Microsoft Visual Studio\%MSVC_VERSION%\BuildTools\VC"
set "VCPKG_OVERLAY_TRIPLETS=%cd%\ci\kokoro\windows\triplets"
set "VCPKG_OVERLAY_PORTS=%cd%\ci\kokoro\windows\vcpkg-overlays"

REM The remaining of the build script is implemented in PowerShell.
@echo %date% %time%
Expand Down
6 changes: 3 additions & 3 deletions ci/kokoro/windows/lib/vcpkg.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,9 @@ function Install-Vcpkg {

$vcpkg_version = Get-Content -Path "${project_root}\ci\etc\vcpkg-version.txt"
$vcpkg_url = "https://github.com/microsoft/vcpkg/archive/${vcpkg_version}.zip"
if ($vcpkg_version -match "[0-9]{4}.[0-9]{2}.[0-9]{2}" ) {
$vcpkg_url = "https://github.com/microsoft/vcpkg/archive/refs/tags/${vcpkg_version}.zip"
}
# if ($vcpkg_version -match "[0-9]{4}.[0-9]{2}.[0-9]{2}" ) {
# $vcpkg_url = "https://github.com/microsoft/vcpkg/archive/refs/tags/${vcpkg_version}.zip"
# }
Write-Host "$(Get-Date -Format o) Downloading vcpkg archive from $vcpkg_url"

# Download the right version of `vcpkg`
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
diff --git a/cmake/opentracing-cpp.cmake b/cmake/opentracing-cpp.cmake
index f014ecd..fd8898a 100644
--- a/cmake/opentracing-cpp.cmake
+++ b/cmake/opentracing-cpp.cmake
@@ -1,7 +1,11 @@
# Copyright The OpenTelemetry Authors
# SPDX-License-Identifier: Apache-2.0

-find_package(OpenTracing CONFIG QUIET)
+find_package(OpenTracing CONFIG REQUIRED)
+if(NOT TARGET OpenTracing::opentracing AND TARGET OpenTracing::opentracing-static)
+ add_library(OpenTracing::opentracing ALIAS OpenTracing::opentracing-static)
+endif()
+
set(OpenTracing_PROVIDER "find_package")

if(NOT OpenTracing_FOUND)
Loading
Loading