Skip to content

Commit

Permalink
Publish gradle-plugins to Maven Central (#5333)
Browse files Browse the repository at this point in the history
* Publish gradle-plugins to Maven Central

* Update .github/workflows/release-gradle-plugins.yml

Co-authored-by: Trask Stalnaker <[email protected]>

Co-authored-by: Trask Stalnaker <[email protected]>
  • Loading branch information
anuraaga and trask authored Feb 11, 2022
1 parent 7e5fa5e commit aeee5b4
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 6 deletions.
12 changes: 9 additions & 3 deletions .github/workflows/release-gradle-plugins.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
7 changes: 6 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
67 changes: 65 additions & 2 deletions gradle-plugins/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down Expand Up @@ -44,8 +45,16 @@ dependencies {
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
}

tasks.withType<Test>().configureEach {
useJUnitPlatform()
tasks {
withType<Test>().configureEach {
useJUnitPlatform()
}

withType<JavaCompile>().configureEach {
with(options) {
release.set(8)
}
}
}

pluginBundle {
Expand All @@ -67,6 +76,14 @@ gradlePlugin {
}
}

java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(11))
}
withJavadocJar()
withSourcesJar()
}

nexusPublishing {
packageGroup.set("io.opentelemetry")

Expand All @@ -86,3 +103,49 @@ tasks {
enabled = !version.toString().contains("SNAPSHOT")
}
}

afterEvaluate {
publishing {
publications {
named<MavenPublication>("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:[email protected]:open-telemetry/opentelemetry-java-instrumentation.git")
developerConnection.set("scm:git:[email protected]:open-telemetry/opentelemetry-java-instrumentation.git")
url.set("[email protected]: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"])
}
}
}

0 comments on commit aeee5b4

Please sign in to comment.