Skip to content

Commit cf5035e

Browse files
committed
fix gradle plugin marker signing
1 parent 452169e commit cf5035e

2 files changed

Lines changed: 61 additions & 6 deletions

File tree

src/main/kotlin/nebula/plugin/publishing/NebulaSigningPlugin.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,11 @@ class NebulaSigningPlugin : Plugin<Project> {
4545
val signingExtension = project.extensions.getByType(SigningExtension::class.java)
4646
val publishingExtension = project.extensions.getByType(PublishingExtension::class.java)
4747
signingExtension.useInMemoryPgpKeys(nebulaOssPublishingExtension.signingKey.get(), nebulaOssPublishingExtension.signingPassword.get())
48-
// Only sign nebula publication
49-
signingExtension.sign(publishingExtension.publications.getByName(nebulaPublicationName))
48+
// Only sign nebula publication and plugin markers
49+
val publicationsToSign = publishingExtension.publications.filter {
50+
it.name == nebulaPublicationName || it.name.endsWith("PluginMarkerMaven")
51+
}
52+
signingExtension.sign(*publicationsToSign.toTypedArray())
5053

5154
project.tasks.withType(PublishToMavenRepository::class.java).configureEach {
5255
this.dependsOn(project.tasks.withType(Sign::class.java))

src/test/kotlin/nebula/plugin/publishing/NebulaSigningPluginTest.kt

Lines changed: 56 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,7 @@
1818
package nebula.plugin.publishing
1919

2020
import nebula.test.dsl.TestKitAssertions.assertThat
21-
import nebula.test.dsl.plugins
22-
import nebula.test.dsl.rootProject
23-
import nebula.test.dsl.testProject
24-
import nebula.test.dsl.version
21+
import nebula.test.dsl.*
2522
import org.gradle.testkit.runner.TaskOutcome
2623
import org.junit.jupiter.api.Test
2724
import org.junit.jupiter.api.io.TempDir
@@ -117,4 +114,59 @@ afterEvaluate {
117114
assertThat(result.task(":signNebulaPublication")).hasOutcome(TaskOutcome.SKIPPED)
118115
assertThat(result.task(":signCustomMavenPublication")).isNull()
119116
}
117+
118+
@Test
119+
fun `gradle plugin signs nebula publication and corresponding plugin marker`() {
120+
val runner = testProject(projectDir) {
121+
rootProject {
122+
plugins {
123+
id("com.netflix.nebula.maven-publish") version ("19.0.0")
124+
id("java-gradle-plugin")
125+
id("com.netflix.nebula.signing")
126+
}
127+
src {
128+
main {
129+
java("MyPlugin.java","""
130+
import org.gradle.api.Plugin;
131+
import org.gradle.api.Project;
132+
133+
public class MyPlugin implements Plugin<Project> {
134+
public void apply(Project project){
135+
}
136+
}
137+
""")
138+
}
139+
}
140+
rawBuildScript(
141+
//language=kotlin
142+
"""
143+
nebulaOssPublishing {
144+
signingKey = "something"
145+
signingPassword = "something"
146+
}
147+
gradlePlugin {
148+
plugins {
149+
create("myPlugin") {
150+
id = "com.netflix.test"
151+
displayName = "Test plugin"
152+
description = "Test description"
153+
implementationClass = "MyPlugin"
154+
}
155+
}
156+
}
157+
tasks.named("publishNebulaPublicationToMavenLocal") { onlyIf { false }}
158+
afterEvaluate {
159+
tasks.named("signNebulaPublication") { onlyIf { false }}
160+
//tasks.named("signMyPluginMarkerMavenPublication") { onlyIf { false }}
161+
}
162+
"""
163+
)
164+
}
165+
}
166+
167+
val result = runner.run("publishNebulaPublicationToMavenLocal")
168+
projectDir.resolve("build/publications/myPluginPluginMarkerMaven")
169+
assertThat(result.task(":signNebulaPublication")).hasOutcome(TaskOutcome.SKIPPED)
170+
assertThat(result.task(":signMyPluginMarkerMavenPublication")).hasOutcome(TaskOutcome.SKIPPED)
171+
}
120172
}

0 commit comments

Comments
 (0)