import java.time.Duration plugins { id("io.github.gradle-nexus.publish-plugin") id("otel.spotless-conventions") } apply(from = "version.gradle.kts") nexusPublishing { packageGroup.set("io.opentelemetry") repositories { sonatype { username.set(System.getenv("SONATYPE_USER")) password.set(System.getenv("SONATYPE_KEY")) } } connectTimeout.set(Duration.ofMinutes(5)) clientTimeout.set(Duration.ofMinutes(5)) transitionCheckOptions { // We have many artifacts so Maven Central takes a long time on its compliance checks. This sets // the timeout for waiting for the repository to close to a comfortable 50 minutes. maxRetries.set(300) delayBetween.set(Duration.ofSeconds(10)) } } // The BOM projects register dependent tasks that actually do the generating. tasks.register("generateBuildSubstitutions") { group = "publishing" description = "Generate a code snippet that can be copy-pasted for use in composite builds." } subprojects { group = "io.opentelemetry" } tasks { register("updateVersionInDocs") { group = "documentation" doLast { val version = findProperty("release.version") val versionParts = version.toString().split('.') val minorVersionNumber = Integer.parseInt(versionParts[1]) val nextSnapshot = "${versionParts[0]}.${minorVersionNumber + 1}.0-SNAPSHOT" val readme = file("README.md") if (readme.exists()) { val readmeText = readme.readText() val updatedText = readmeText .replace("""\d+\.\d+\.\d+""".toRegex(), "$version") .replace("""\d+\.\d+\.\d+-SNAPSHOT""".toRegex(), "$nextSnapshot") .replace("""(implementation.*io\.opentelemetry:.*:)(\d+\.\d+\.\d+)(?!-SNAPSHOT)(.*)""".toRegex(), "\$1${version}\$3") .replace("""(implementation.*io\.opentelemetry:.*:)(\d+\.\d+\.\d+-SNAPSHOT)(.*)""".toRegex(), "\$1${nextSnapshot}\$3") .replace(""".*""".toRegex(), "$version") .replace(""".*""".toRegex(), "$version-alpha") readme.writeText(updatedText) } } } }