From 8d4f3f6e0d7fa0bbddbbf4bbf29c9301b39f2215 Mon Sep 17 00:00:00 2001 From: Moray Baruh Date: Wed, 17 Jul 2024 12:19:14 +0300 Subject: [PATCH] refactor project and build --- .github/workflows/publish.yaml | 14 +- build.gradle.kts | 121 ++++-------------- library/build.gradle.kts | 70 ++++++++++ ...IntegrationRequestObservationConvention.kt | 0 .../FeignMicrometerAutoConfiguration.kt | 0 .../config/TracingAutoConfiguration.kt | 0 .../config/VersionMetricsAutoConfiguration.kt | 0 ...itional-spring-configuration-metadata.json | 0 ...ot.autoconfigure.AutoConfiguration.imports | 0 plugins/build.gradle.kts | 52 ++++++++ .../plugin/ObservabilityArtifactsPlugin.kt | 0 .../ObservabilityArtifactsPluginTest.kt | 0 settings.gradle.kts | 6 + 13 files changed, 158 insertions(+), 105 deletions(-) create mode 100644 library/build.gradle.kts rename {src => library/src}/main/kotlin/com/valensas/observability/client/IntegrationRequestObservationConvention.kt (100%) rename {src => library/src}/main/kotlin/com/valensas/observability/config/FeignMicrometerAutoConfiguration.kt (100%) rename {src => library/src}/main/kotlin/com/valensas/observability/config/TracingAutoConfiguration.kt (100%) rename {src => library/src}/main/kotlin/com/valensas/observability/config/VersionMetricsAutoConfiguration.kt (100%) rename {src => library/src}/main/resources/META-INF/additional-spring-configuration-metadata.json (100%) rename {src => library/src}/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (100%) create mode 100644 plugins/build.gradle.kts rename {src => plugins/src}/main/kotlin/com/valensas/observability/plugin/ObservabilityArtifactsPlugin.kt (100%) rename {src => plugins/src}/test/kotlin/com/valensas/observability/plugin/ObservabilityArtifactsPluginTest.kt (100%) diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 0c7f34f..51c3429 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -18,19 +18,11 @@ jobs: java-version: "21" distribution: graalvm cache: 'gradle' - - name: Validate version + - name: Publish run: | VERSION=${GITHUB_REF#refs/tags/} - if grep -Eq "version\s+=\s+\"${VERSION}\"" ./build.gradle.kts - then - echo "Publishing version '${VERSION}'" - ./gradlew publish - else - echo "Detected tag version '${VERSION}' and version from build.gradle.kts does not match." - exit 1 - fi - - name: Publish - run: ./gradlew publishToCentralPortal + echo "Publishing version '${VERSION}'" + ./gradlew "-Pversion=$VERSION" publishToCentralPortal env: SIGNING_PASSPHRASE: ${{ secrets.SIGNING_PASSPHRASE }} SIGNING_SECRETKEY: ${{ secrets.SIGNING_SECRETKEY }} diff --git a/build.gradle.kts b/build.gradle.kts index 338a449..203fd8e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,114 +1,47 @@ -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile - -repositories { - mavenCentral() -} +import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { - `java-gradle-plugin` id("com.github.ben-manes.versions") version "0.51.0" - id("org.springframework.boot") version "3.3.1" apply false - id("io.spring.dependency-management") version "1.1.6" - id("org.jmailen.kotlinter") version "4.4.0" + kotlin("jvm") version "2.0.0" + id("org.jmailen.kotlinter") version "4.4.1" id("maven-publish") id("java-library") - kotlin("jvm") version "1.9.21" - id("net.thebugmc.gradle.sonatype-central-portal-publisher") version "1.2.3" } -group = "com.valensas" -version = "3.0.0" -java.sourceCompatibility = JavaVersion.VERSION_17 +subprojects { + apply(plugin = "maven-publish") + apply(plugin="java-library") + apply(plugin="org.jetbrains.kotlin.jvm") + apply(plugin="org.jmailen.kotlinter") -dependencyManagement { - imports { - mavenBom(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES) - } -} + group = "com.valensas" -gradlePlugin { - val observabilityArtifactsPlugin by plugins.creating { - id = "com.valensas.observability-artifacts" - implementationClass = "com.valensas.observability.plugin.ObservabilityArtifactsPlugin" + repositories { + mavenCentral() } -} - -dependencies { - implementation("org.graalvm.polyglot:polyglot:24.0.1") - compileOnly("io.micrometer:micrometer-tracing-bridge-brave") - compileOnly("org.springframework.boot:spring-boot-starter-actuator") - compileOnly("io.github.openfeign:feign-micrometer:13.3") - compileOnly("org.springframework.boot:spring-boot-starter") - compileOnly("org.springframework.boot:spring-boot-starter-webflux") - testImplementation("org.jetbrains.kotlin:kotlin-test-junit5") - testRuntimeOnly("org.junit.platform:junit-platform-launcher") -} + java.sourceCompatibility = JavaVersion.VERSION_17 + kotlin { + compilerOptions { + jvmTarget = JvmTarget.JVM_17 + } + } -tasks.withType { - kotlinOptions { - freeCompilerArgs = listOf("-Xjsr305=strict") - jvmTarget = "17" + dependencies { + testImplementation("org.jetbrains.kotlin:kotlin-test-junit5") + testRuntimeOnly("org.junit.platform:junit-platform-launcher") } -} -tasks.withType { - useJUnitPlatform() -} + tasks.withType { + useJUnitPlatform() + } -publishing { - publications { - create("plugin") { - groupId = "com.valensas.observability-artifacts" - artifactId = "com.valensas.observability-artifacts" - from(components["java"]) - } - create("artifact") { - groupId = "com.valensas" - artifactId = "observability" - from(components["java"]) - } + tasks.getByName("jar") { + archiveClassifier = "" } -} -tasks.getByName("jar") { - archiveClassifier = "" } - -signing { - val keyId = System.getenv("SIGNING_KEYID") - val secretKey = System.getenv("SIGNING_SECRETKEY") - val passphrase = System.getenv("SIGNING_PASSPHRASE") - - useInMemoryPgpKeys(keyId, secretKey, passphrase) +dependencies { + implementation(kotlin("stdlib-jdk8")) } - -centralPortal { - username = System.getenv("SONATYPE_USERNAME") - password = System.getenv("SONATYPE_PASSWORD") - - pom { - name = "Observability" - description = "A simple library to manage observability needs for Spring Boot." - url = "https://valensas.com/" - scm { - url = "https://github.com/Valensas/observability" - } - - licenses { - license { - name.set("MIT License") - url.set("https://mit-license.org") - } - } - - developers { - developer { - id.set("0") - name.set("Valensas") - email.set("info@valensas.com") - } - } - } -} \ No newline at end of file diff --git a/library/build.gradle.kts b/library/build.gradle.kts new file mode 100644 index 0000000..0f5cf37 --- /dev/null +++ b/library/build.gradle.kts @@ -0,0 +1,70 @@ +plugins { + id("org.springframework.boot") version "3.3.1" apply false + id("io.spring.dependency-management") version "1.1.6" + id("net.thebugmc.gradle.sonatype-central-portal-publisher") version "1.2.3" +} + +dependencyManagement { + imports { + mavenBom(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES) + } +} + +dependencies { + implementation("org.graalvm.polyglot:polyglot:24.0.2") + compileOnly("io.micrometer:micrometer-tracing-bridge-brave") + compileOnly("org.springframework.boot:spring-boot-starter-actuator") + compileOnly("io.github.openfeign:feign-micrometer:13.3") + compileOnly("org.springframework.boot:spring-boot-starter") + compileOnly("org.springframework.boot:spring-boot-starter-webflux") +} + + +publishing { + publications { + create("library", MavenPublication::class.java) { + artifactId = "observability" + from(components["java"]) + } + } + repositories { + mavenLocal() + } +} + +signing { + val keyId = System.getenv("SIGNING_KEYID") + val secretKey = System.getenv("SIGNING_SECRETKEY") + val passphrase = System.getenv("SIGNING_PASSPHRASE") + + useInMemoryPgpKeys(keyId, secretKey, passphrase) +} + +centralPortal { + name = "observability" + username = System.getenv("SONATYPE_USERNAME") + password = System.getenv("SONATYPE_PASSWORD") + pom { + name = "Observability" + description = "A simple library to manage observability needs for Spring Boot." + url = "https://valensas.com/" + scm { + url = "https://github.com/Valensas/observability" + } + + licenses { + license { + name.set("MIT License") + url.set("https://mit-license.org") + } + } + + developers { + developer { + id.set("0") + name.set("Valensas") + email.set("info@valensas.com") + } + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/valensas/observability/client/IntegrationRequestObservationConvention.kt b/library/src/main/kotlin/com/valensas/observability/client/IntegrationRequestObservationConvention.kt similarity index 100% rename from src/main/kotlin/com/valensas/observability/client/IntegrationRequestObservationConvention.kt rename to library/src/main/kotlin/com/valensas/observability/client/IntegrationRequestObservationConvention.kt diff --git a/src/main/kotlin/com/valensas/observability/config/FeignMicrometerAutoConfiguration.kt b/library/src/main/kotlin/com/valensas/observability/config/FeignMicrometerAutoConfiguration.kt similarity index 100% rename from src/main/kotlin/com/valensas/observability/config/FeignMicrometerAutoConfiguration.kt rename to library/src/main/kotlin/com/valensas/observability/config/FeignMicrometerAutoConfiguration.kt diff --git a/src/main/kotlin/com/valensas/observability/config/TracingAutoConfiguration.kt b/library/src/main/kotlin/com/valensas/observability/config/TracingAutoConfiguration.kt similarity index 100% rename from src/main/kotlin/com/valensas/observability/config/TracingAutoConfiguration.kt rename to library/src/main/kotlin/com/valensas/observability/config/TracingAutoConfiguration.kt diff --git a/src/main/kotlin/com/valensas/observability/config/VersionMetricsAutoConfiguration.kt b/library/src/main/kotlin/com/valensas/observability/config/VersionMetricsAutoConfiguration.kt similarity index 100% rename from src/main/kotlin/com/valensas/observability/config/VersionMetricsAutoConfiguration.kt rename to library/src/main/kotlin/com/valensas/observability/config/VersionMetricsAutoConfiguration.kt diff --git a/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/library/src/main/resources/META-INF/additional-spring-configuration-metadata.json similarity index 100% rename from src/main/resources/META-INF/additional-spring-configuration-metadata.json rename to library/src/main/resources/META-INF/additional-spring-configuration-metadata.json diff --git a/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/library/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports similarity index 100% rename from src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports rename to library/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports diff --git a/plugins/build.gradle.kts b/plugins/build.gradle.kts new file mode 100644 index 0000000..a43a106 --- /dev/null +++ b/plugins/build.gradle.kts @@ -0,0 +1,52 @@ +plugins { + `java-gradle-plugin` + id("net.thebugmc.gradle.sonatype-central-portal-publisher") version "1.2.3" +} + +group = "com.valensas.observability-artifacts" + +gradlePlugin { + plugins { + create("artifacts") { + id = "com.valensas.observability-artifacts" + implementationClass = "com.valensas.observability.plugin.ObservabilityArtifactsPlugin" + } + } +} + +signing { + val keyId = System.getenv("SIGNING_KEYID") + val secretKey = System.getenv("SIGNING_SECRETKEY") + val passphrase = System.getenv("SIGNING_PASSPHRASE") + + useInMemoryPgpKeys(keyId, secretKey, passphrase) +} + +centralPortal { + name = "observability-artifacts.gradle.plugin" + username = System.getenv("SONATYPE_USERNAME") + password = System.getenv("SONATYPE_PASSWORD") + pom { + name = "Observability Plugins" + description = "A simple library to manage observability needs for Spring Boot." + url = "https://valensas.com/" + scm { + url = "https://github.com/Valensas/observability" + } + + licenses { + license { + name.set("MIT License") + url.set("https://mit-license.org") + } + } + + developers { + developer { + id.set("0") + name.set("Valensas") + email.set("info@valensas.com") + } + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/valensas/observability/plugin/ObservabilityArtifactsPlugin.kt b/plugins/src/main/kotlin/com/valensas/observability/plugin/ObservabilityArtifactsPlugin.kt similarity index 100% rename from src/main/kotlin/com/valensas/observability/plugin/ObservabilityArtifactsPlugin.kt rename to plugins/src/main/kotlin/com/valensas/observability/plugin/ObservabilityArtifactsPlugin.kt diff --git a/src/test/kotlin/com/valensas/observability/plugin/ObservabilityArtifactsPluginTest.kt b/plugins/src/test/kotlin/com/valensas/observability/plugin/ObservabilityArtifactsPluginTest.kt similarity index 100% rename from src/test/kotlin/com/valensas/observability/plugin/ObservabilityArtifactsPluginTest.kt rename to plugins/src/test/kotlin/com/valensas/observability/plugin/ObservabilityArtifactsPluginTest.kt diff --git a/settings.gradle.kts b/settings.gradle.kts index a5cc016..3929da1 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1 +1,7 @@ +plugins { + id("org.gradle.toolchains.foojay-resolver-convention") version "0.5.0" +} rootProject.name = "observability" + +include("library") +include("plugins") \ No newline at end of file