diff --git a/.github/workflows/test-runner.yml b/.github/workflows/test-runner.yml index b36abbb02c7fe..332fc660dbd67 100644 --- a/.github/workflows/test-runner.yml +++ b/.github/workflows/test-runner.yml @@ -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 @@ -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 @@ -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 }}' diff --git a/.github/workflows/windows-cmake.yml b/.github/workflows/windows-cmake.yml index e4df0d5868dcd..5b17e71ff82ac 100644 --- a/.github/workflows/windows-cmake.yml +++ b/.github/workflows/windows-cmake.yml @@ -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 }} @@ -103,6 +103,7 @@ jobs: dataproc discoveryengine monitoring + opentelemetry retail sql dialogflow_cx @@ -209,6 +210,8 @@ jobs: universe_domain ) shard5_features=( + asset + channel video datacatalog iam @@ -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 diff --git a/CMakeLists.txt b/CMakeLists.txt index 156cf8a2ef011..c0c4daab368f9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -97,6 +97,10 @@ if (APPLE " cmake -DGOOGLE_CLOUD_CPP_ENABLE_MACOS_OPENSSL_CHECK=OFF ...") endif () +if (WIN32) + add_definitions(-DNOMINMAX) +endif () + # If ccache is installed use it for the build. option(GOOGLE_CLOUD_CPP_ENABLE_CCACHE "Automatically use ccache if available" OFF) diff --git a/ci/etc/vcpkg-version.txt b/ci/etc/vcpkg-version.txt index fdf37ec4deabe..922462b2e1e1c 100644 --- a/ci/etc/vcpkg-version.txt +++ b/ci/etc/vcpkg-version.txt @@ -1 +1 @@ -2025.10.17 +3895230f38e498525f2560a281223d12066fa74a diff --git a/ci/gha/builds/lib/cmake.sh b/ci/gha/builds/lib/cmake.sh index de923525946e8..5b99fb0803a93 100755 --- a/ci/gha/builds/lib/cmake.sh +++ b/ci/gha/builds/lib/cmake.sh @@ -44,6 +44,7 @@ function cmake::common_args() { fi local args args=( + -DCMAKE_CXX_STANDARD=17 -DGOOGLE_CLOUD_CPP_ENABLE_CCACHE=OFF -DGOOGLE_CLOUD_CPP_ENABLE_WERROR=ON -GNinja @@ -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") printf "%s\n" "${args[@]}" } diff --git a/ci/gha/builds/vcpkg-overlays/opentelemetry-cpp/fix-target_link.patch b/ci/gha/builds/vcpkg-overlays/opentelemetry-cpp/fix-target_link.patch new file mode 100644 index 0000000000000..f4709e8b1c28f --- /dev/null +++ b/ci/gha/builds/vcpkg-overlays/opentelemetry-cpp/fix-target_link.patch @@ -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) diff --git a/ci/gha/builds/vcpkg-overlays/opentelemetry-cpp/portfile.cmake b/ci/gha/builds/vcpkg-overlays/opentelemetry-cpp/portfile.cmake index eacf1ea4ada70..878e45be8b27e 100644 --- a/ci/gha/builds/vcpkg-overlays/opentelemetry-cpp/portfile.cmake +++ b/ci/gha/builds/vcpkg-overlays/opentelemetry-cpp/portfile.cmake @@ -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 @@ -29,6 +28,8 @@ vcpkg_check_features( WITH_PROMETHEUS elasticsearch WITH_ELASTICSEARCH + otlp-file + WITH_OTLP_FILE otlp-http WITH_OTLP_HTTP otlp-grpc @@ -37,14 +38,18 @@ 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 @@ -52,7 +57,7 @@ if (WITH_OTLP_GRPC OR WITH_OTLP_HTTP) FILENAME "opentelemetry-proto-${OTEL_PROTO_VERSION}.tar.gz" SHA512 - 8c75e4ff79c4b5b251e0ec8ece92ec901d70ec601644505ffdd137fb728daac91fd9203e1f448500124906737d91d80f10b694977688c655418b94f61c828d06 + 0e72e0c32d2d699d7a832a4c57a9dbe60e844d4c4e8d7b39eb45e4282cde89fccfeef893eae70b9d018643782090a7228c3ef60863b00747498e80f0cf1db8ae ) vcpkg_extract_source_archive(src ARCHIVE "${ARCHIVE}") @@ -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) set(OPENTELEMETRY_CPP_EXTERNAL_COMPONENTS "OFF") @@ -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) vcpkg_cmake_install() vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/${PORT}") diff --git a/ci/gha/builds/vcpkg-overlays/opentelemetry-cpp/vcpkg.json b/ci/gha/builds/vcpkg-overlays/opentelemetry-cpp/vcpkg.json new file mode 100644 index 0000000000000..0570a7bd2e108 --- /dev/null +++ b/ci/gha/builds/vcpkg-overlays/opentelemetry-cpp/vcpkg.json @@ -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" + ] + } + } +} diff --git a/ci/kokoro/lib/vcpkg.sh b/ci/kokoro/lib/vcpkg.sh index 17e6e21bfc8d2..3d4a304fc3ba5 100644 --- a/ci/kokoro/lib/vcpkg.sh +++ b/ci/kokoro/lib/vcpkg.sh @@ -32,10 +32,10 @@ install_vcpkg() { io::log "Downloading vcpkg into ${vcpkg_dir}..." VCPKG_VERSION="$(