From baeb2edbc830577c27806a4d4c6f694bf06970e0 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 15 Sep 2025 12:00:08 +0200 Subject: [PATCH 1/3] fix version resolution for semconv --- .../contrib/azure/resource/IncubatingAttributes.java | 8 ++++---- .../resource/AzureAppServiceResourceProviderTest.java | 2 +- .../resource/AzureFunctionsResourceProviderTest.java | 2 +- .../src/main/kotlin/otel.java-conventions.gradle.kts | 10 +++++++++- dependencyManagement/build.gradle.kts | 4 ---- 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/IncubatingAttributes.java b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/IncubatingAttributes.java index 491cb99a8..524ca8727 100644 --- a/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/IncubatingAttributes.java +++ b/azure-resources/src/main/java/io/opentelemetry/contrib/azure/resource/IncubatingAttributes.java @@ -24,10 +24,10 @@ final class IncubatingAttributes { AttributeKey.stringKey("cloud.resource_id"); public static final class CloudPlatformIncubatingValues { - public static final String AZURE_VM = "azure_vm"; - public static final String AZURE_AKS = "azure_aks"; - public static final String AZURE_FUNCTIONS = "azure_functions"; - public static final String AZURE_APP_SERVICE = "azure_app_service"; + public static final String AZURE_VM = "azure.vm"; + public static final String AZURE_AKS = "azure.aks"; + public static final String AZURE_FUNCTIONS = "azure.functions"; + public static final String AZURE_APP_SERVICE = "azure.app_service"; private CloudPlatformIncubatingValues() {} } diff --git a/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/AzureAppServiceResourceProviderTest.java b/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/AzureAppServiceResourceProviderTest.java index 75360f0e9..90a7d27b5 100644 --- a/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/AzureAppServiceResourceProviderTest.java +++ b/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/AzureAppServiceResourceProviderTest.java @@ -48,7 +48,7 @@ void defaultValues() { createResource(DEFAULT_ENV_VARS) .containsEntry(SERVICE_NAME, TEST_WEBSITE_SITE_NAME) .containsEntry(CLOUD_PROVIDER, "azure") - .containsEntry(CLOUD_PLATFORM, "azure_app_service") + .containsEntry(CLOUD_PLATFORM, "azure.app_service") .containsEntry( CLOUD_RESOURCE_ID, "/subscriptions/TEST_WEBSITE_OWNER_NAME/resourceGroups/TEST_WEBSITE_RESOURCE_GROUP/providers/Microsoft.Web/sites/TEST_WEBSITE_SITE_NAME") diff --git a/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/AzureFunctionsResourceProviderTest.java b/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/AzureFunctionsResourceProviderTest.java index e2c39cc7a..b680088e8 100644 --- a/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/AzureFunctionsResourceProviderTest.java +++ b/azure-resources/src/test/java/io/opentelemetry/contrib/azure/resource/AzureFunctionsResourceProviderTest.java @@ -38,7 +38,7 @@ class AzureFunctionsResourceProviderTest { void defaultValues() { createResource(DEFAULT_ENV_VARS) .containsEntry(CLOUD_PROVIDER, "azure") - .containsEntry(CLOUD_PLATFORM, "azure_functions") + .containsEntry(CLOUD_PLATFORM, "azure.functions") .containsEntry(FAAS_NAME, TEST_WEBSITE_SITE_NAME) .containsEntry(FAAS_VERSION, TEST_FUNCTION_VERSION) .containsEntry(FAAS_INSTANCE, TEST_WEBSITE_INSTANCE_ID) diff --git a/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts b/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts index 48f443d67..9f6496b4e 100644 --- a/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts @@ -19,6 +19,7 @@ base.archivesName.set("opentelemetry-${project.name}") // Version to use to compile code and run tests. val DEFAULT_JAVA_VERSION = JavaVersion.VERSION_17 +val semconvVersion = "1.37.0" java { toolchain { @@ -77,7 +78,7 @@ tasks { exceptionFormat = TestExceptionFormat.FULL showStandardStreams = true } - + configure { // only care about code coverage for code in this repository // (in particular avoiding netty classes which sometimes end up @@ -145,6 +146,13 @@ dependencies { compileOnly("com.google.errorprone:error_prone_annotations") } +configurations.all { + resolutionStrategy { + force("io.opentelemetry.semconv:opentelemetry-semconv:${semconvVersion}") + force("io.opentelemetry.semconv:opentelemetry-semconv-incubating:${semconvVersion}-alpha") + } +} + testing { suites.withType(JvmTestSuite::class).configureEach { dependencies { diff --git a/dependencyManagement/build.gradle.kts b/dependencyManagement/build.gradle.kts index 637f8fbac..66cc7f2fd 100644 --- a/dependencyManagement/build.gradle.kts +++ b/dependencyManagement/build.gradle.kts @@ -3,7 +3,6 @@ plugins { } val otelInstrumentationVersion = "2.19.0-alpha" -val semconvVersion = "1.37.0" javaPlatform { allowDependencies() @@ -20,9 +19,6 @@ dependencies { api(enforcedPlatform("com.squareup.okhttp3:okhttp-bom:5.1.0")) constraints { - api("io.opentelemetry.semconv:opentelemetry-semconv:${semconvVersion}") - api("io.opentelemetry.semconv:opentelemetry-semconv-incubating:${semconvVersion}") - api("com.google.auto.service:auto-service:1.1.1") api("com.google.auto.service:auto-service-annotations:1.1.1") api("com.google.auto.value:auto-value:1.11.0") From 11fbc1116c61580fb2f428078f26d16b72bf8bc1 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 15 Sep 2025 13:31:15 +0200 Subject: [PATCH 2/3] fix version resolution for semconv --- .../kotlin/otel.java-conventions.gradle.kts | 54 ++++++++++++------- dependencyManagement/build.gradle.kts | 12 +++-- 2 files changed, 44 insertions(+), 22 deletions(-) diff --git a/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts b/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts index 9f6496b4e..0a1453c39 100644 --- a/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts @@ -19,12 +19,18 @@ base.archivesName.set("opentelemetry-${project.name}") // Version to use to compile code and run tests. val DEFAULT_JAVA_VERSION = JavaVersion.VERSION_17 -val semconvVersion = "1.37.0" java { toolchain { languageVersion.set( - otelJava.minJavaVersionSupported.map { JavaLanguageVersion.of(Math.max(it.majorVersion.toInt(), DEFAULT_JAVA_VERSION.majorVersion.toInt())) } + otelJava.minJavaVersionSupported.map { + JavaLanguageVersion.of( + Math.max( + it.majorVersion.toInt(), + DEFAULT_JAVA_VERSION.majorVersion.toInt() + ) + ) + } ) } @@ -37,7 +43,7 @@ tasks { with(options) { release.set(otelJava.minJavaVersionSupported.map { it.majorVersion.toInt() }) - if (name!="jmhCompileGeneratedClasses") { + if (name != "jmhCompileGeneratedClasses") { compilerArgs.addAll( listOf( "-Xlint:all", @@ -107,21 +113,36 @@ plugins.withId("otel.publish-conventions") { tasks { register("generateVersionResource") { val moduleName = otelJava.moduleName - val propertiesDir = moduleName.map { layout.buildDirectory.file("generated/properties/${it.replace('.', '/')}") } + val propertiesDir = moduleName.map { + layout.buildDirectory.file( + "generated/properties/${ + it.replace( + '.', + '/' + ) + }" + ) + } val projectVersion = project.version.toString() inputs.property("project.version", projectVersion) outputs.dir(propertiesDir) doLast { - File(propertiesDir.get().get().asFile, "version.properties").writeText("contrib.version=${projectVersion}") + File( + propertiesDir.get().get().asFile, + "version.properties" + ).writeText("contrib.version=${projectVersion}") } } } sourceSets { main { - output.dir(layout.buildDirectory.dir("generated/properties"), "builtBy" to "generateVersionResource") + output.dir( + layout.buildDirectory.dir("generated/properties"), + "builtBy" to "generateVersionResource" + ) } } } @@ -146,13 +167,6 @@ dependencies { compileOnly("com.google.errorprone:error_prone_annotations") } -configurations.all { - resolutionStrategy { - force("io.opentelemetry.semconv:opentelemetry-semconv:${semconvVersion}") - force("io.opentelemetry.semconv:opentelemetry-semconv-incubating:${semconvVersion}-alpha") - } -} - testing { suites.withType(JvmTestSuite::class).configureEach { dependencies { @@ -185,18 +199,21 @@ fun isJavaVersionAllowed(version: JavaVersion): Boolean { if (otelJava.minJavaVersionSupported.get() > version) { return false } - if (otelJava.maxJavaVersionForTests.isPresent && otelJava.maxJavaVersionForTests.get().compareTo(version) < 0) { + if (otelJava.maxJavaVersionForTests.isPresent && otelJava.maxJavaVersionForTests.get() + .compareTo(version) < 0 + ) { return false } return true } afterEvaluate { - val testJavaVersion = gradle.startParameter.projectProperties["testJavaVersion"]?.let(JavaVersion::toVersion) - val useJ9 = gradle.startParameter.projectProperties["testJavaVM"]?.run { this=="openj9" } + val testJavaVersion = + gradle.startParameter.projectProperties["testJavaVersion"]?.let(JavaVersion::toVersion) + val useJ9 = gradle.startParameter.projectProperties["testJavaVM"]?.run { this == "openj9" } ?: false tasks.withType().configureEach { - if (testJavaVersion!=null) { + if (testJavaVersion != null) { javaLauncher.set( javaToolchains.launcherFor { languageVersion.set(JavaLanguageVersion.of(testJavaVersion.majorVersion)) @@ -224,5 +241,6 @@ dependencyCheck { suppressionFile = "buildscripts/dependency-check-suppressions.xml" failBuildOnCVSS = 7.0f // fail on high or critical CVE nvd.apiKey = System.getenv("NVD_API_KEY") - nvd.delay = 3500 // until next dependency check release (https://github.com/jeremylong/DependencyCheck/pull/6333) + nvd.delay = + 3500 // until next dependency check release (https://github.com/jeremylong/DependencyCheck/pull/6333) } diff --git a/dependencyManagement/build.gradle.kts b/dependencyManagement/build.gradle.kts index 66cc7f2fd..0f55bae81 100644 --- a/dependencyManagement/build.gradle.kts +++ b/dependencyManagement/build.gradle.kts @@ -3,6 +3,7 @@ plugins { } val otelInstrumentationVersion = "2.19.0-alpha" +val semconvVersion = "1.37.0" javaPlatform { allowDependencies() @@ -13,12 +14,15 @@ dependencies { // under JvmTestSuite so they don't show up as runtime dependencies in license and vulnerability scans // (the constraints section below doesn't have this issue, and will only show up // as runtime dependencies if they are actually used as runtime dependencies) - api(enforcedPlatform("io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:${otelInstrumentationVersion}")) - api(enforcedPlatform("com.fasterxml.jackson:jackson-bom:2.20.0")) - api(enforcedPlatform("com.google.protobuf:protobuf-bom:4.32.1")) - api(enforcedPlatform("com.squareup.okhttp3:okhttp-bom:5.1.0")) + api(platform("io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:${otelInstrumentationVersion}")) + api(platform("com.fasterxml.jackson:jackson-bom:2.20.0")) + api(platform("com.google.protobuf:protobuf-bom:4.32.1")) + api(platform("com.squareup.okhttp3:okhttp-bom:5.1.0")) constraints { + api("io.opentelemetry.semconv:opentelemetry-semconv:${semconvVersion}") + api("io.opentelemetry.semconv:opentelemetry-semconv-incubating:${semconvVersion}-alpha") + api("com.google.auto.service:auto-service:1.1.1") api("com.google.auto.service:auto-service-annotations:1.1.1") api("com.google.auto.value:auto-value:1.11.0") From 0eccc4e9a7c429bfaea7b92d09422f4c2058070e Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Mon, 15 Sep 2025 13:32:27 +0200 Subject: [PATCH 3/3] fix version resolution for semconv --- .../kotlin/otel.java-conventions.gradle.kts | 46 ++++--------------- 1 file changed, 10 insertions(+), 36 deletions(-) diff --git a/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts b/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts index 0a1453c39..f72c44034 100644 --- a/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts @@ -23,14 +23,7 @@ val DEFAULT_JAVA_VERSION = JavaVersion.VERSION_17 java { toolchain { languageVersion.set( - otelJava.minJavaVersionSupported.map { - JavaLanguageVersion.of( - Math.max( - it.majorVersion.toInt(), - DEFAULT_JAVA_VERSION.majorVersion.toInt() - ) - ) - } + otelJava.minJavaVersionSupported.map { JavaLanguageVersion.of(Math.max(it.majorVersion.toInt(), DEFAULT_JAVA_VERSION.majorVersion.toInt())) } ) } @@ -43,7 +36,7 @@ tasks { with(options) { release.set(otelJava.minJavaVersionSupported.map { it.majorVersion.toInt() }) - if (name != "jmhCompileGeneratedClasses") { + if (name!="jmhCompileGeneratedClasses") { compilerArgs.addAll( listOf( "-Xlint:all", @@ -113,36 +106,21 @@ plugins.withId("otel.publish-conventions") { tasks { register("generateVersionResource") { val moduleName = otelJava.moduleName - val propertiesDir = moduleName.map { - layout.buildDirectory.file( - "generated/properties/${ - it.replace( - '.', - '/' - ) - }" - ) - } + val propertiesDir = moduleName.map { layout.buildDirectory.file("generated/properties/${it.replace('.', '/')}") } val projectVersion = project.version.toString() inputs.property("project.version", projectVersion) outputs.dir(propertiesDir) doLast { - File( - propertiesDir.get().get().asFile, - "version.properties" - ).writeText("contrib.version=${projectVersion}") + File(propertiesDir.get().get().asFile, "version.properties").writeText("contrib.version=${projectVersion}") } } } sourceSets { main { - output.dir( - layout.buildDirectory.dir("generated/properties"), - "builtBy" to "generateVersionResource" - ) + output.dir(layout.buildDirectory.dir("generated/properties"), "builtBy" to "generateVersionResource") } } } @@ -199,21 +177,18 @@ fun isJavaVersionAllowed(version: JavaVersion): Boolean { if (otelJava.minJavaVersionSupported.get() > version) { return false } - if (otelJava.maxJavaVersionForTests.isPresent && otelJava.maxJavaVersionForTests.get() - .compareTo(version) < 0 - ) { + if (otelJava.maxJavaVersionForTests.isPresent && otelJava.maxJavaVersionForTests.get().compareTo(version) < 0) { return false } return true } afterEvaluate { - val testJavaVersion = - gradle.startParameter.projectProperties["testJavaVersion"]?.let(JavaVersion::toVersion) - val useJ9 = gradle.startParameter.projectProperties["testJavaVM"]?.run { this == "openj9" } + val testJavaVersion = gradle.startParameter.projectProperties["testJavaVersion"]?.let(JavaVersion::toVersion) + val useJ9 = gradle.startParameter.projectProperties["testJavaVM"]?.run { this=="openj9" } ?: false tasks.withType().configureEach { - if (testJavaVersion != null) { + if (testJavaVersion!=null) { javaLauncher.set( javaToolchains.launcherFor { languageVersion.set(JavaLanguageVersion.of(testJavaVersion.majorVersion)) @@ -241,6 +216,5 @@ dependencyCheck { suppressionFile = "buildscripts/dependency-check-suppressions.xml" failBuildOnCVSS = 7.0f // fail on high or critical CVE nvd.apiKey = System.getenv("NVD_API_KEY") - nvd.delay = - 3500 // until next dependency check release (https://github.com/jeremylong/DependencyCheck/pull/6333) + nvd.delay = 3500 // until next dependency check release (https://github.com/jeremylong/DependencyCheck/pull/6333) }