ZeroTierOne/ext/opentelemetry-cpp-1.21.0/ci/do_ci.ps1
2025-07-11 10:37:21 -07:00

562 lines
14 KiB
PowerShell

# Copyright The OpenTelemetry Authors
# SPDX-License-Identifier: Apache-2.0
$ErrorActionPreference = "Stop";
trap { $host.SetShouldExit(1) }
$action = $args[0]
$nproc = (Get-ComputerInfo).CsNumberOfLogicalProcessors
$SRC_DIR = (Get-Item -Path ".\").FullName
# Workaround https://github.com/bazelbuild/bazel/issues/18683
$BAZEL_STARTUP_OPTIONS = "--output_base=C:\O"
$BAZEL_OPTIONS = "--copt=-DENABLE_ASYNC_EXPORT --compilation_mode=dbg"
$BAZEL_TEST_OPTIONS = "$BAZEL_OPTIONS --test_output=errors"
if (!(test-path build)) {
mkdir build
}
$BUILD_DIR = Join-Path "$SRC_DIR" "build"
if (!(test-path install_test)) {
mkdir install_test
}
$INSTALL_TEST_DIR = Join-Path "$SRC_DIR" "install_test"
if (!(test-path plugin)) {
mkdir plugin
}
$PLUGIN_DIR = Join-Path "$SRC_DIR" "plugin"
$VCPKG_DIR = Join-Path "$SRC_DIR" "tools/vcpkg"
$Env:CTEST_OUTPUT_ON_FAILURE = "1"
switch ($action) {
"bazel.build" {
bazel $BAZEL_STARTUP_OPTIONS build $BAZEL_OPTIONS --action_env=VCPKG_DIR=$VCPKG_DIR --deleted_packages=opentracing-shim -- //...
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
}
"cmake.test" {
cd "$BUILD_DIR"
cmake $SRC_DIR `
-DVCPKG_TARGET_TRIPLET=x64-windows `
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
cmake --build . -j $nproc
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
ctest -C Debug
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
}
"cmake.dll.test" {
cd "$BUILD_DIR"
cmake $SRC_DIR `
-DVCPKG_TARGET_TRIPLET=x64-windows `
-DOPENTELEMETRY_BUILD_DLL=1 `
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
cmake --build . -j $nproc
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
ctest -C Debug
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
$env:PATH = "$BUILD_DIR\ext\src\dll\Debug;$env:PATH"
examples\simple\Debug\example_simple.exe
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
examples\metrics_simple\Debug\metrics_ostream_example.exe
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
examples\logs_simple\Debug\example_logs_simple.exe
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
}
"cmake.dll.cxx20.test" {
cd "$BUILD_DIR"
cmake $SRC_DIR `
-DCMAKE_CXX_STANDARD=20 `
-DVCPKG_TARGET_TRIPLET=x64-windows `
-DOPENTELEMETRY_BUILD_DLL=1 `
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
cmake --build . -j $nproc
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
ctest -C Debug
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
$env:PATH = "$BUILD_DIR\ext\src\dll\Debug;$env:PATH"
examples\simple\Debug\example_simple.exe
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
examples\metrics_simple\Debug\metrics_ostream_example.exe
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
examples\logs_simple\Debug\example_logs_simple.exe
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
}
"cmake.maintainer.test" {
cd "$BUILD_DIR"
cmake $SRC_DIR `
-DWITH_OTLP_GRPC=ON `
-DWITH_OTLP_HTTP=ON `
-DWITH_OTLP_RETRY_PREVIEW=ON `
-DOTELCPP_MAINTAINER_MODE=ON `
-DWITH_NO_DEPRECATED_CODE=ON `
-DVCPKG_TARGET_TRIPLET=x64-windows `
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
cmake --build . -j $nproc
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
ctest -C Debug
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
}
"cmake.maintainer.cxx20.stl.test" {
cd "$BUILD_DIR"
cmake $SRC_DIR `
-DWITH_STL=CXX20 `
-DCMAKE_CXX_STANDARD=20 `
-DWITH_OTLP_GRPC=ON `
-DWITH_OTLP_HTTP=ON `
-DWITH_OTLP_RETRY_PREVIEW=ON `
-DOTELCPP_MAINTAINER_MODE=ON `
-DWITH_NO_DEPRECATED_CODE=ON `
-DVCPKG_TARGET_TRIPLET=x64-windows `
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
cmake --build . -j $nproc
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
ctest -C Debug
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
}
"cmake.maintainer.abiv2.test" {
cd "$BUILD_DIR"
cmake $SRC_DIR `
-DWITH_OTLP_GRPC=ON `
-DWITH_OTLP_HTTP=ON `
-DWITH_OTLP_RETRY_PREVIEW=ON `
-DOTELCPP_MAINTAINER_MODE=ON `
-DWITH_NO_DEPRECATED_CODE=ON `
-DWITH_ABI_VERSION_1=OFF `
-DWITH_ABI_VERSION_2=ON `
-DVCPKG_TARGET_TRIPLET=x64-windows `
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
cmake --build . -j $nproc
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
ctest -C Debug
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
}
"cmake.with_async_export.test" {
cd "$BUILD_DIR"
cmake $SRC_DIR `
-DVCPKG_TARGET_TRIPLET=x64-windows `
-DWITH_ASYNC_EXPORT_PREVIEW=ON `
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
cmake --build . -j $nproc
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
ctest -C Debug
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
}
"cmake.exporter.otprotocol.test" {
cd "$BUILD_DIR"
cmake $SRC_DIR `
-DVCPKG_TARGET_TRIPLET=x64-windows `
-DWITH_OTLP_GRPC=ON `
-DWITH_OTLP_HTTP=ON `
-DWITH_OTLP_RETRY_PREVIEW=ON `
-DWITH_OTPROTCOL=ON `
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
cmake --build . -j $nproc
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
ctest -C Debug
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
}
"cmake.exporter.otprotocol.dll.test" {
cd "$BUILD_DIR"
cmake $SRC_DIR `
-DVCPKG_TARGET_TRIPLET=x64-windows `
-DOPENTELEMETRY_BUILD_DLL=1 `
-DWITH_OTPROTCOL=ON `
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
cmake --build . -j $nproc
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
ctest -C Debug
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
}
"cmake.exporter.otprotocol.with_async_export.test" {
cd "$BUILD_DIR"
cmake $SRC_DIR `
-DVCPKG_TARGET_TRIPLET=x64-windows `
-DWITH_ASYNC_EXPORT_PREVIEW=ON `
-DWITH_OTPROTCOL=ON `
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
cmake --build . -j $nproc
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
ctest -C Debug
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
}
"cmake.build_example_plugin" {
cd "$BUILD_DIR"
cmake $SRC_DIR `
-DVCPKG_TARGET_TRIPLET=x64-windows `
-DWITH_ASYNC_EXPORT_PREVIEW=ON `
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
cmake --build . -j $nproc
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
cp examples/plugin/plugin/Debug/example_plugin.dll ${PLUGIN_DIR}
}
"cmake.test_example_plugin" {
cd "$BUILD_DIR"
cmake $SRC_DIR `
-DVCPKG_TARGET_TRIPLET=x64-windows `
-DWITH_ASYNC_EXPORT_PREVIEW=ON `
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
cmake --build . -j $nproc
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
cp examples/plugin/plugin/Debug/example_plugin.dll ${PLUGIN_DIR}
$config = New-TemporaryFile
examples/plugin/load/Debug/load_plugin_example.exe ${PLUGIN_DIR}/example_plugin.dll $config
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
}
"cmake.install.test" {
Remove-Item -Recurse -Force "$BUILD_DIR\*"
Remove-Item -Recurse -Force "$INSTALL_TEST_DIR\*"
cd "$BUILD_DIR"
if (Test-Path Env:\CXX_STANDARD) {
$CXX_STANDARD = [int](Get-Item Env:\CXX_STANDARD).Value
} else {
$CXX_STANDARD = 14
}
if (-not $CXX_STANDARD) {
$CXX_STANDARD = 14
}
Write-Host "Using CXX_STANDARD: $CXX_STANDARD"
$CMAKE_OPTIONS = @(
"-DCMAKE_CXX_STANDARD=$CXX_STANDARD",
"-DCMAKE_CXX_STANDARD_REQUIRED=ON",
"-DCMAKE_CXX_EXTENSIONS=OFF",
"-DVCPKG_TARGET_TRIPLET=x64-windows",
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
)
cmake $SRC_DIR `
$CMAKE_OPTIONS `
"-DCMAKE_INSTALL_PREFIX=$INSTALL_TEST_DIR" `
-DWITH_ABI_VERSION_1=OFF `
-DWITH_ABI_VERSION_2=ON `
-DWITH_THREAD_INSTRUMENTATION_PREVIEW=ON `
-DWITH_METRICS_EXEMPLAR_PREVIEW=ON `
-DWITH_ASYNC_EXPORT_PREVIEW=ON `
-DWITH_OTLP_GRPC_SSL_MTLS_PREVIEW=ON `
-DWITH_OTLP_RETRY_PREVIEW=ON `
-DWITH_OTLP_GRPC=ON `
-DWITH_OTLP_HTTP=ON `
-DWITH_OTLP_FILE=ON `
-DWITH_OTLP_HTTP_COMPRESSION=ON `
-DWITH_HTTP_CLIENT_CURL=ON `
-DWITH_PROMETHEUS=ON `
-DWITH_ZIPKIN=ON `
-DWITH_ELASTICSEARCH=ON `
-DWITH_ETW=ON `
-DWITH_EXAMPLES=ON `
-DWITH_EXAMPLES_HTTP=ON `
-DBUILD_W3CTRACECONTEXT_TEST=ON `
-DOPENTELEMETRY_INSTALL=ON
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
cmake --build . -j $nproc
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
ctest -C Debug
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
cmake --build . --target install
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
$env:PATH = "$INSTALL_TEST_DIR\bin;$env:PATH"
$CMAKE_OPTIONS_STRING = $CMAKE_OPTIONS -join " "
$EXPECTED_COMPONENTS = @(
"api",
"sdk",
"ext_common",
"ext_http_curl",
"exporters_in_memory",
"exporters_ostream",
"exporters_otlp_common",
"exporters_otlp_file",
"exporters_otlp_grpc",
"exporters_otlp_http",
"exporters_prometheus",
"exporters_elasticsearch",
"exporters_zipkin",
"exporters_etw"
)
$EXPECTED_COMPONENTS_STRING = $EXPECTED_COMPONENTS -join ";"
mkdir "$BUILD_DIR\install_test"
cd "$BUILD_DIR\install_test"
cmake $CMAKE_OPTIONS `
"-DCMAKE_PREFIX_PATH=$INSTALL_TEST_DIR" `
"-DINSTALL_TEST_CMAKE_OPTIONS=$CMAKE_OPTIONS_STRING" `
"-DINSTALL_TEST_COMPONENTS=$EXPECTED_COMPONENTS_STRING" `
-S "$SRC_DIR\install\test\cmake"
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
ctest -C Debug --output-on-failure
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
exit 0
}
"cmake.dll.install.test" {
cd "$BUILD_DIR"
Remove-Item -Recurse -Force "$BUILD_DIR\*"
Remove-Item -Recurse -Force "$INSTALL_TEST_DIR\*"
$CMAKE_OPTIONS = @(
"-DCMAKE_CXX_STANDARD=17",
"-DVCPKG_TARGET_TRIPLET=x64-windows",
"-DCMAKE_TOOLCHAIN_FILE=$VCPKG_DIR/scripts/buildsystems/vcpkg.cmake"
)
cmake $SRC_DIR `
$CMAKE_OPTIONS `
"-DCMAKE_INSTALL_PREFIX=$INSTALL_TEST_DIR" `
-DOPENTELEMETRY_BUILD_DLL=1 `
-DWITH_ABI_VERSION_1=ON `
-DWITH_ABI_VERSION_2=OFF `
-DWITH_THREAD_INSTRUMENTATION_PREVIEW=ON `
-DWITH_METRICS_EXEMPLAR_PREVIEW=ON `
-DWITH_ASYNC_EXPORT_PREVIEW=ON `
-DWITH_ETW=ON `
-DOPENTELEMETRY_INSTALL=ON `
-DWITH_OTLP_GRPC_SSL_MTLS_PREVIEW=OFF `
-DWITH_OTLP_RETRY_PREVIEW=OFF `
-DWITH_OTLP_GRPC=OFF `
-DWITH_OTLP_HTTP=OFF `
-DWITH_OTLP_FILE=OFF `
-DWITH_OTLP_HTTP_COMPRESSION=OFF `
-DWITH_HTTP_CLIENT_CURL=OFF `
-DWITH_PROMETHEUS=OFF `
-DWITH_ZIPKIN=OFF `
-DWITH_ELASTICSEARCH=OFF `
-DWITH_EXAMPLES=OFF `
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
cmake --build . -j $nproc
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
ctest -C Debug
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
cmake --build . --target install
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
$env:PATH = "$INSTALL_TEST_DIR\bin;$env:PATH"
echo "$env:PATH"
$CMAKE_OPTIONS_STRING = $CMAKE_OPTIONS -join " "
$EXPECTED_COMPONENTS = @(
"api",
"sdk",
"ext_common",
"exporters_in_memory",
"exporters_ostream",
"exporters_etw",
"ext_dll"
)
$EXPECTED_COMPONENTS_STRING = $EXPECTED_COMPONENTS -join ";"
mkdir "$BUILD_DIR\install_test"
cd "$BUILD_DIR\install_test"
cmake $CMAKE_OPTIONS `
"-DCMAKE_PREFIX_PATH=$INSTALL_TEST_DIR" `
"-DINSTALL_TEST_CMAKE_OPTIONS=$CMAKE_OPTIONS_STRING" `
"-DINSTALL_TEST_COMPONENTS=$EXPECTED_COMPONENTS_STRING" `
-S "$SRC_DIR\install\test\cmake"
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
ctest -C Debug --output-on-failure
$exit = $LASTEXITCODE
if ($exit -ne 0) {
exit $exit
}
exit 0
}
default {
echo "unknown action: $action"
exit 1
}
}