diff --git a/.github/workflows/release-gradle-plugins.yml b/.github/workflows/release-gradle-plugins.yml index 0a2b157c75fd..d6d60d76a37b 100644 --- a/.github/workflows/release-gradle-plugins.yml +++ b/.github/workflows/release-gradle-plugins.yml @@ -156,10 +156,16 @@ jobs: distribution: adopt java-version: 11 - # TODO (trask) cache gradle wrapper? - name: Build and publish gradle plugins + uses: gradle/gradle-build-action@v2 env: + SONATYPE_USER: ${{ secrets.SONATYPE_USER }} + SONATYPE_KEY: ${{ secrets.SONATYPE_KEY }} GRADLE_PUBLISH_KEY: ${{ secrets.GRADLE_PUBLISH_KEY }} GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }} - run: ../gradlew build publishPlugins - working-directory: gradle-plugins + GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} + GPG_PASSWORD: ${{ secrets.GPG_PASSWORD }} + with: + # Don't use publishToSonatype since we don't want to publish the marker artifact + arguments: build publishPlugins publishPluginMavenPublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository + build-root-directory: gradle-plugins diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fc893f2f13ba..0d296cad32ce 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -157,10 +157,15 @@ jobs: - name: Build and publish gradle plugins uses: gradle/gradle-build-action@v2 env: + SONATYPE_USER: ${{ secrets.SONATYPE_USER }} + SONATYPE_KEY: ${{ secrets.SONATYPE_KEY }} GRADLE_PUBLISH_KEY: ${{ secrets.GRADLE_PUBLISH_KEY }} GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }} + GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} + GPG_PASSWORD: ${{ secrets.GPG_PASSWORD }} with: - arguments: build publishPlugins + # Don't use publishToSonatype since we don't want to publish the marker artifact + arguments: build publishPlugins publishPluginMavenPublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository build-root-directory: gradle-plugins - name: Set release version diff --git a/gradle-plugins/build.gradle.kts b/gradle-plugins/build.gradle.kts index e216b427dcc6..3cdfcbb721e8 100644 --- a/gradle-plugins/build.gradle.kts +++ b/gradle-plugins/build.gradle.kts @@ -3,6 +3,7 @@ import java.time.Duration plugins { `kotlin-dsl` `maven-publish` + signing id("com.gradle.plugin-publish") id("io.github.gradle-nexus.publish-plugin") @@ -44,8 +45,16 @@ dependencies { testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") } -tasks.withType().configureEach { - useJUnitPlatform() +tasks { + withType().configureEach { + useJUnitPlatform() + } + + withType().configureEach { + with(options) { + release.set(8) + } + } } pluginBundle { @@ -67,6 +76,14 @@ gradlePlugin { } } +java { + toolchain { + languageVersion.set(JavaLanguageVersion.of(11)) + } + withJavadocJar() + withSourcesJar() +} + nexusPublishing { packageGroup.set("io.opentelemetry") @@ -86,3 +103,49 @@ tasks { enabled = !version.toString().contains("SNAPSHOT") } } + +afterEvaluate { + publishing { + publications { + named("pluginMaven") { + pom { + name.set("OpenTelemetry Instrumentation Gradle Plugins") + description.set("Gradle plugins to assist developing OpenTelemetry instrumentation") + url.set("https://github.com/open-telemetry/opentelemetry-java-instrumentation") + + licenses { + license { + name.set("The Apache License, Version 2.0") + url.set("http://www.apache.org/licenses/LICENSE-2.0.txt") + } + } + + developers { + developer { + id.set("opentelemetry") + name.set("OpenTelemetry") + url.set("https://github.com/open-telemetry/opentelemetry-java-instrumentation/discussions") + } + } + + scm { + connection.set("scm:git:git@github.com:open-telemetry/opentelemetry-java-instrumentation.git") + developerConnection.set("scm:git:git@github.com:open-telemetry/opentelemetry-java-instrumentation.git") + url.set("git@github.com:open-telemetry/opentelemetry-java-instrumentation.git") + } + } + } + } + } + +// Sign only if we have a key to do so + val signingKey: String? = System.getenv("GPG_PRIVATE_KEY") +// Stub out entire signing block off of CI since Gradle provides no way of lazy configuration of +// signing tasks. + if (System.getenv("CI") != null && signingKey != null) { + signing { + useInMemoryPgpKeys(signingKey, System.getenv("GPG_PASSWORD")) + sign(publishing.publications["pluginMaven"]) + } + } +}