From b95f8e600651302be7287cf20e1b300833c4bbbd Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Sun, 3 Sep 2023 11:27:14 +0200 Subject: [PATCH 1/9] Created okhttp auto instrumentation subproject --- .../okhttp/okhttp-3.0/build.gradle.kts | 9 +++++++++ build.gradle.kts | 2 ++ instrumentation/build.gradle.kts | 10 +++++++--- settings.gradle.kts | 1 + 4 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 auto-instrumentation/okhttp/okhttp-3.0/build.gradle.kts diff --git a/auto-instrumentation/okhttp/okhttp-3.0/build.gradle.kts b/auto-instrumentation/okhttp/okhttp-3.0/build.gradle.kts new file mode 100644 index 000000000..25f2a4be8 --- /dev/null +++ b/auto-instrumentation/okhttp/okhttp-3.0/build.gradle.kts @@ -0,0 +1,9 @@ +plugins { + id("java-library") +} + +java { + val javaVersion = rootProject.extra["java_version"] as JavaVersion + sourceCompatibility = javaVersion + targetCompatibility = javaVersion +} \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index a9cb8e09e..33952d3cd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -15,6 +15,8 @@ plugins { id("io.github.gradle-nexus.publish-plugin") version "1.3.0" } +extra["java_version"] = JavaVersion.VERSION_1_8 + allprojects { repositories { google() diff --git a/instrumentation/build.gradle.kts b/instrumentation/build.gradle.kts index 1301067ba..45962fa20 100644 --- a/instrumentation/build.gradle.kts +++ b/instrumentation/build.gradle.kts @@ -24,7 +24,10 @@ android { } release { isMinifyEnabled = false - proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) } } @@ -49,8 +52,9 @@ android { compileOptions { isCoreLibraryDesugaringEnabled = true - sourceCompatibility(JavaVersion.VERSION_1_8) - targetCompatibility(JavaVersion.VERSION_1_8) + val javaVersion = rootProject.extra["java_version"] as JavaVersion + sourceCompatibility(javaVersion) + targetCompatibility(javaVersion) } testOptions { diff --git a/settings.gradle.kts b/settings.gradle.kts index 0bcf751d7..5d257f496 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,3 +1,4 @@ rootProject.name = "opentelemetry-android" include(":instrumentation") +include(":auto-instrumentation:okhttp:okhttp-3.0") \ No newline at end of file From be8eb16f57b844d1526196e0e87fb0df76b2d30c Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Sun, 3 Sep 2023 12:36:24 +0200 Subject: [PATCH 2/9] Created otel java lib and publishing conventions --- ...tel.android-library-conventions.gradle.kts | 59 +------------- .../otel.java-library-conventions.gradle.kts | 4 + .../otel.publish-conventions.gradle.kts | 77 +++++++++++++++++++ instrumentation/build.gradle.kts | 2 +- 4 files changed, 83 insertions(+), 59 deletions(-) create mode 100644 buildSrc/src/main/kotlin/otel.java-library-conventions.gradle.kts create mode 100644 buildSrc/src/main/kotlin/otel.publish-conventions.gradle.kts diff --git a/buildSrc/src/main/kotlin/otel.android-library-conventions.gradle.kts b/buildSrc/src/main/kotlin/otel.android-library-conventions.gradle.kts index 42d749371..b5dd1a165 100644 --- a/buildSrc/src/main/kotlin/otel.android-library-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/otel.android-library-conventions.gradle.kts @@ -3,13 +3,9 @@ import org.gradle.api.publish.maven.MavenPublication plugins { id("com.android.library") - id("maven-publish") - id("signing") + id("otel.errorprone-conventions") } -val isARelease = project.hasProperty("release") && project.property("release") == "true" - -val variantToPublish = "release" android { lint { warningsAsErrors = true @@ -17,57 +13,4 @@ android { // we rely on dependabot for dependency updates disable.add("GradleDependency") } - - publishing { - singleVariant(variantToPublish) { - - // Adding sources and javadoc artifacts only during a release. - if (isARelease) { - withJavadocJar() - withSourcesJar() - } - } - } -} - -afterEvaluate { - publishing.publications { - val maven = create("maven") { - from(components.findByName(variantToPublish)) - pom { - val repoUrl = "https://github.com/open-telemetry/opentelemetry-android" - name.set("OpenTelemetry Android") - description.set(project.description) - url.set(repoUrl) - licenses { - license { - name.set("The Apache Software License, Version 2.0") - url.set("http://www.apache.org/licenses/LICENSE-2.0.txt") - } - } - scm { - val scmUrl = "scm:git:git@github.com:open-telemetry/opentelemetry-android.git" - connection.set(scmUrl) - developerConnection.set(scmUrl) - url.set(repoUrl) - tag.set("HEAD") - } - developers { - developer { - id.set("opentelemetry") - name.set("OpenTelemetry") - url.set("https://github.com/open-telemetry/community") - } - } - } - } - - // Signing only during a release. - if (isARelease) { - signing { - useInMemoryPgpKeys(System.getenv("GPG_PRIVATE_KEY"), System.getenv("GPG_PASSWORD")) - sign(maven) - } - } - } } \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/otel.java-library-conventions.gradle.kts b/buildSrc/src/main/kotlin/otel.java-library-conventions.gradle.kts new file mode 100644 index 000000000..2509b8a6c --- /dev/null +++ b/buildSrc/src/main/kotlin/otel.java-library-conventions.gradle.kts @@ -0,0 +1,4 @@ +plugins { + id("java-library") + id("otel.errorprone-conventions") +} diff --git a/buildSrc/src/main/kotlin/otel.publish-conventions.gradle.kts b/buildSrc/src/main/kotlin/otel.publish-conventions.gradle.kts new file mode 100644 index 000000000..8b48e734b --- /dev/null +++ b/buildSrc/src/main/kotlin/otel.publish-conventions.gradle.kts @@ -0,0 +1,77 @@ +import com.android.build.api.dsl.LibraryExtension + +plugins { + id("maven-publish") + id("signing") +} + +val isARelease = project.hasProperty("release") && project.property("release") == "true" + +val android = extensions.findByType(LibraryExtension::class.java) + +val androidVariantToRelease = "release" +if (android != null) { + android.publishing { + singleVariant(androidVariantToRelease) { + + // Adding sources and javadoc artifacts only during a release. + if (isARelease) { + withJavadocJar() + withSourcesJar() + } + } + } +} else { + extensions.configure(JavaPluginExtension::class.java) { + if (isARelease) { + withJavadocJar() + withSourcesJar() + } + } +} + +afterEvaluate { + publishing.publications { + val maven = create("maven") { + if (android != null) { + from(components.findByName(androidVariantToRelease)) + } else { + from(components.findByName("java")) + } + pom { + val repoUrl = "https://github.com/open-telemetry/opentelemetry-android" + name.set("OpenTelemetry Android") + description.set(project.description) + url.set(repoUrl) + licenses { + license { + name.set("The Apache Software License, Version 2.0") + url.set("http://www.apache.org/licenses/LICENSE-2.0.txt") + } + } + scm { + val scmUrl = "scm:git:git@github.com:open-telemetry/opentelemetry-android.git" + connection.set(scmUrl) + developerConnection.set(scmUrl) + url.set(repoUrl) + tag.set("HEAD") + } + developers { + developer { + id.set("opentelemetry") + name.set("OpenTelemetry") + url.set("https://github.com/open-telemetry/community") + } + } + } + } + + // Signing only during a release. + if (isARelease) { + signing { + useInMemoryPgpKeys(System.getenv("GPG_PRIVATE_KEY"), System.getenv("GPG_PASSWORD")) + sign(maven) + } + } + } +} diff --git a/instrumentation/build.gradle.kts b/instrumentation/build.gradle.kts index 45962fa20..17c7772c5 100644 --- a/instrumentation/build.gradle.kts +++ b/instrumentation/build.gradle.kts @@ -1,6 +1,6 @@ plugins { id("otel.android-library-conventions") - id("otel.errorprone-conventions") + id("otel.publish-conventions") } // This submodule is alpha and is not yet intended to be used by itself From 7b92f4256a612a6506422ccfaff3b1a13e51d4c5 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Sun, 3 Sep 2023 12:53:38 +0200 Subject: [PATCH 3/9] Moving android minsdk to gradle.properties --- .../main/kotlin/otel.android-library-conventions.gradle.kts | 4 ++++ gradle.properties | 1 + instrumentation/build.gradle.kts | 1 - 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/otel.android-library-conventions.gradle.kts b/buildSrc/src/main/kotlin/otel.android-library-conventions.gradle.kts index b5dd1a165..e4a9758f6 100644 --- a/buildSrc/src/main/kotlin/otel.android-library-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/otel.android-library-conventions.gradle.kts @@ -7,6 +7,10 @@ plugins { } android { + defaultConfig { + minSdk = (property("android.minSdk") as String).toInt() + } + lint { warningsAsErrors = true // A newer version of androidx.appcompat:appcompat than 1.3.1 is available: 1.4.1 [GradleDependency] diff --git a/gradle.properties b/gradle.properties index 53090ddda..c35c0609e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,6 +18,7 @@ android.useAndroidX=true # generate the BuildConfig class that contains the app version android.defaults.buildfeatures.buildconfig=true +android.minSdk=21 version=0.1.0 group=io.opentelemetry.android diff --git a/instrumentation/build.gradle.kts b/instrumentation/build.gradle.kts index 17c7772c5..a44d7e1be 100644 --- a/instrumentation/build.gradle.kts +++ b/instrumentation/build.gradle.kts @@ -13,7 +13,6 @@ android { buildToolsVersion = "33.0.1" defaultConfig { - minSdk = 21 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles("consumer-rules.pro") } From 1aab3fd6f5800e86c38d360ba39b2ad7999eb81f Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Sun, 3 Sep 2023 12:55:10 +0200 Subject: [PATCH 4/9] Moving android minsdk to gradle.properties --- .../src/main/kotlin/otel.android-library-conventions.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/otel.android-library-conventions.gradle.kts b/buildSrc/src/main/kotlin/otel.android-library-conventions.gradle.kts index e4a9758f6..cb6b9cb75 100644 --- a/buildSrc/src/main/kotlin/otel.android-library-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/otel.android-library-conventions.gradle.kts @@ -8,7 +8,7 @@ plugins { android { defaultConfig { - minSdk = (property("android.minSdk") as String).toInt() + minSdk = (project.property("android.minSdk") as String).toInt() } lint { From c5cce3435c7613120f9723df43fde0b51873329f Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Sun, 3 Sep 2023 13:01:32 +0200 Subject: [PATCH 5/9] Adding animal sniffer to java libs --- buildSrc/build.gradle.kts | 1 + .../otel.java-library-conventions.gradle.kts | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index dae319b98..3d4f79b0a 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -25,4 +25,5 @@ dependencies { implementation("com.diffplug.spotless:spotless-plugin-gradle:6.21.0") implementation("net.ltgt.gradle:gradle-errorprone-plugin:3.1.0") implementation("net.ltgt.gradle:gradle-nullaway-plugin:1.6.0") + implementation("ru.vyarus:gradle-animalsniffer-plugin:1.7.1") } diff --git a/buildSrc/src/main/kotlin/otel.java-library-conventions.gradle.kts b/buildSrc/src/main/kotlin/otel.java-library-conventions.gradle.kts index 2509b8a6c..70066af35 100644 --- a/buildSrc/src/main/kotlin/otel.java-library-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/otel.java-library-conventions.gradle.kts @@ -1,4 +1,25 @@ +import ru.vyarus.gradle.plugin.animalsniffer.AnimalSniffer + plugins { id("java-library") id("otel.errorprone-conventions") + id("ru.vyarus.animalsniffer") +} + +dependencies { + signature("com.toasttab.android:gummy-bears-api-${project.property("android.minSdk")}:0.5.1@signature") +} + +animalsniffer { + sourceSets = listOf(java.sourceSets.main.get()) +} + +// Always having declared output makes this task properly participate in tasks up-to-date checks +tasks.withType { + reports.text.required.set(true) +} + +// Attaching animalsniffer check to the compilation process. +tasks.named("classes").configure { + finalizedBy("animalsnifferMain") } From 2da57974db0e267cb3a62c717959f729f4562a3b Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Sun, 3 Sep 2023 14:41:09 +0200 Subject: [PATCH 6/9] Moving source and target compatibility config to conventions --- .../main/kotlin/otel.android-library-conventions.gradle.kts | 6 ++++++ .../main/kotlin/otel.java-library-conventions.gradle.kts | 6 ++++++ instrumentation/build.gradle.kts | 4 ---- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/buildSrc/src/main/kotlin/otel.android-library-conventions.gradle.kts b/buildSrc/src/main/kotlin/otel.android-library-conventions.gradle.kts index cb6b9cb75..fa4251c5b 100644 --- a/buildSrc/src/main/kotlin/otel.android-library-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/otel.android-library-conventions.gradle.kts @@ -17,4 +17,10 @@ android { // we rely on dependabot for dependency updates disable.add("GradleDependency") } + + compileOptions { + val javaVersion = rootProject.extra["java_version"] as JavaVersion + sourceCompatibility(javaVersion) + targetCompatibility(javaVersion) + } } \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/otel.java-library-conventions.gradle.kts b/buildSrc/src/main/kotlin/otel.java-library-conventions.gradle.kts index 70066af35..bf9771aa2 100644 --- a/buildSrc/src/main/kotlin/otel.java-library-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/otel.java-library-conventions.gradle.kts @@ -6,6 +6,12 @@ plugins { id("ru.vyarus.animalsniffer") } +java { + val javaVersion = rootProject.extra["java_version"] as JavaVersion + sourceCompatibility = javaVersion + targetCompatibility = javaVersion +} + dependencies { signature("com.toasttab.android:gummy-bears-api-${project.property("android.minSdk")}:0.5.1@signature") } diff --git a/instrumentation/build.gradle.kts b/instrumentation/build.gradle.kts index a44d7e1be..3dcae8aa5 100644 --- a/instrumentation/build.gradle.kts +++ b/instrumentation/build.gradle.kts @@ -50,10 +50,6 @@ android { compileOptions { isCoreLibraryDesugaringEnabled = true - - val javaVersion = rootProject.extra["java_version"] as JavaVersion - sourceCompatibility(javaVersion) - targetCompatibility(javaVersion) } testOptions { From 4ce58b9a7574a4ab2efff4a160573cc70e0ab97c Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Sun, 3 Sep 2023 14:47:41 +0200 Subject: [PATCH 7/9] Moving otel sdk version to properties --- .../okhttp/okhttp-3.0/build.gradle.kts | 10 +++++----- gradle.properties | 1 + instrumentation/build.gradle.kts | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/auto-instrumentation/okhttp/okhttp-3.0/build.gradle.kts b/auto-instrumentation/okhttp/okhttp-3.0/build.gradle.kts index 25f2a4be8..5e0371dae 100644 --- a/auto-instrumentation/okhttp/okhttp-3.0/build.gradle.kts +++ b/auto-instrumentation/okhttp/okhttp-3.0/build.gradle.kts @@ -1,9 +1,9 @@ plugins { - id("java-library") + id("otel.java-library-conventions") + id("otel.publish-conventions") } -java { - val javaVersion = rootProject.extra["java_version"] as JavaVersion - sourceCompatibility = javaVersion - targetCompatibility = javaVersion +val otelVersion = project.property("otel.sdk.version") +dependencies { + implementation("io.opentelemetry.instrumentation:opentelemetry-okhttp-3.0:$otelVersion-alpha") } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index c35c0609e..67f2cdd88 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,6 +19,7 @@ android.useAndroidX=true # generate the BuildConfig class that contains the app version android.defaults.buildfeatures.buildconfig=true android.minSdk=21 +otel.sdk.version=1.28.0 version=0.1.0 group=io.opentelemetry.android diff --git a/instrumentation/build.gradle.kts b/instrumentation/build.gradle.kts index 3dcae8aa5..8fc53a8ef 100644 --- a/instrumentation/build.gradle.kts +++ b/instrumentation/build.gradle.kts @@ -58,7 +58,7 @@ android { } } -val otelVersion = "1.28.0" +val otelVersion = project.property("otel.sdk.version") dependencies { implementation("androidx.appcompat:appcompat:1.6.1") From 0e894ebb753b27eb4cd564afac805ec8bdd7c18a Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Sun, 3 Sep 2023 16:14:32 +0200 Subject: [PATCH 8/9] Removing okhttp module --- auto-instrumentation/okhttp/okhttp-3.0/build.gradle.kts | 9 --------- settings.gradle.kts | 3 +-- 2 files changed, 1 insertion(+), 11 deletions(-) delete mode 100644 auto-instrumentation/okhttp/okhttp-3.0/build.gradle.kts diff --git a/auto-instrumentation/okhttp/okhttp-3.0/build.gradle.kts b/auto-instrumentation/okhttp/okhttp-3.0/build.gradle.kts deleted file mode 100644 index 5e0371dae..000000000 --- a/auto-instrumentation/okhttp/okhttp-3.0/build.gradle.kts +++ /dev/null @@ -1,9 +0,0 @@ -plugins { - id("otel.java-library-conventions") - id("otel.publish-conventions") -} - -val otelVersion = project.property("otel.sdk.version") -dependencies { - implementation("io.opentelemetry.instrumentation:opentelemetry-okhttp-3.0:$otelVersion-alpha") -} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 5d257f496..6d458c175 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,4 +1,3 @@ rootProject.name = "opentelemetry-android" -include(":instrumentation") -include(":auto-instrumentation:okhttp:okhttp-3.0") \ No newline at end of file +include(":instrumentation") \ No newline at end of file From 998943359e45bc418f9cd02bdcaa783ec8e9e6f8 Mon Sep 17 00:00:00 2001 From: Cesar Munoz <56847527+LikeTheSalad@users.noreply.github.com> Date: Sun, 3 Sep 2023 16:17:46 +0200 Subject: [PATCH 9/9] Spotless --- instrumentation/build.gradle.kts | 2 +- settings.gradle.kts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/instrumentation/build.gradle.kts b/instrumentation/build.gradle.kts index 8fc53a8ef..82a6c4ce8 100644 --- a/instrumentation/build.gradle.kts +++ b/instrumentation/build.gradle.kts @@ -25,7 +25,7 @@ android { isMinifyEnabled = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" + "proguard-rules.pro", ) } } diff --git a/settings.gradle.kts b/settings.gradle.kts index 6d458c175..0bcf751d7 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,3 +1,3 @@ rootProject.name = "opentelemetry-android" -include(":instrumentation") \ No newline at end of file +include(":instrumentation")