Add SBOM publishing for kotlin-test libraries

^KTI-1273
This commit is contained in:
Bogdan Mukvich
2023-06-15 16:09:33 +02:00
committed by Space Team
parent 9cfc66ae77
commit 53ce5c22ca
2 changed files with 49 additions and 26 deletions
+4 -5
View File
@@ -20,8 +20,9 @@ fun Project.configureSbom(
target: String? = null,
documentName: String? = null,
gradleConfigurations: Iterable<String> = setOf("runtimeClasspath"),
publication: NamedDomainObjectProvider<MavenPublication>? = null
publication: NamedDomainObjectProvider<MavenPublication>? = null,
): TaskProvider<SpdxSbomTask> {
assert(target == null && publication != null) { "provided publication will be ignored when target is null" }
val project = this
val targetName = target ?: "${mainPublicationName}Publication"
apply<SpdxSbomPlugin>()
@@ -69,10 +70,8 @@ fun Project.configureSbom(
mainPublication.artifact(sbomArtifact)
}
} else if (publication != null) {
pluginManager.withPlugin("kotlin-build-publishing") {
publication.configure {
artifact(sbomArtifact)
}
publication.configure {
artifact(sbomArtifact)
}
}
+45 -21
View File
@@ -21,7 +21,7 @@ val componentFactory = objects.newInstance<ComponentsFactoryAccess>().factory
val jvmApi by configurations.creating {
isCanBeConsumed = true
isCanBeResolved = false
isCanBeResolved = true
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named("java-api"))
attribute(KotlinPlatformType.attribute, KotlinPlatformType.jvm)
@@ -30,7 +30,7 @@ val jvmApi by configurations.creating {
val jvmRuntime by configurations.creating {
isCanBeConsumed = true
isCanBeResolved = false
isCanBeResolved = true
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named("java-runtime"))
attribute(KotlinPlatformType.attribute, KotlinPlatformType.jvm)
@@ -40,7 +40,7 @@ val jvmRuntime by configurations.creating {
val jsApiVariant by configurations.creating {
isCanBeConsumed = false
isCanBeResolved = false
isCanBeResolved = true
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
attribute(KotlinPlatformType.attribute, KotlinPlatformType.js)
@@ -48,7 +48,7 @@ val jsApiVariant by configurations.creating {
}
val jsRuntimeVariant by configurations.creating {
isCanBeConsumed = false
isCanBeResolved = false
isCanBeResolved = true
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-runtime"))
attribute(KotlinPlatformType.attribute, KotlinPlatformType.js)
@@ -58,7 +58,7 @@ val jsRuntimeVariant by configurations.creating {
val wasmApiVariant by configurations.creating {
isCanBeConsumed = false
isCanBeResolved = false
isCanBeResolved = true
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
attribute(KotlinPlatformType.attribute, KotlinPlatformType.wasm)
@@ -66,7 +66,7 @@ val wasmApiVariant by configurations.creating {
}
val wasmRuntimeVariant by configurations.creating {
isCanBeConsumed = false
isCanBeResolved = false
isCanBeResolved = true
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-runtime"))
attribute(KotlinPlatformType.attribute, KotlinPlatformType.wasm)
@@ -76,7 +76,7 @@ val wasmRuntimeVariant by configurations.creating {
val nativeApiVariant by configurations.creating {
isCanBeConsumed = false
isCanBeResolved = false
isCanBeResolved = true
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
attribute(KotlinPlatformType.attribute, KotlinPlatformType.native)
@@ -85,7 +85,7 @@ val nativeApiVariant by configurations.creating {
val commonVariant by configurations.creating {
isCanBeConsumed = false
isCanBeResolved = false
isCanBeResolved = true
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
attribute(KotlinPlatformType.attribute, KotlinPlatformType.common)
@@ -113,8 +113,8 @@ dependencies {
jvmApi(project(":kotlin-stdlib"))
jsApiVariant("$group:kotlin-test-js:$version")
wasmApiVariant("$group:kotlin-test-wasm:$version")
commonVariant("$group:kotlin-test-common:$version")
commonVariant("$group:kotlin-test-annotations-common:$version")
commonVariant(project(":kotlin-test:kotlin-test-common"))
commonVariant(project(":kotlin-test:kotlin-test-annotations-common"))
kotlinTestCommonSources(project(":kotlin-test:kotlin-test-common"))
kotlinTestJvmSources(project(":kotlin-test:kotlin-test-jvm"))
}
@@ -200,7 +200,7 @@ jvmTestFrameworks.forEach { framework ->
val (apiElements, runtimeElements) = listOf("api", "runtime").map { usage ->
configurations.create("${framework}${usage.capitalize()}") {
isCanBeConsumed = true
isCanBeResolved = false
isCanBeResolved = true
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named("java-$usage"))
}
@@ -256,7 +256,7 @@ commonVariant.apply {
val (jsApi, jsRuntime) = listOf("api", "runtime").map { usage ->
configurations.create("js${usage.capitalize()}") {
isCanBeConsumed = true
isCanBeResolved = false
isCanBeResolved = true
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-$usage"))
attribute(KotlinPlatformType.attribute, KotlinPlatformType.js)
@@ -287,7 +287,7 @@ val jsComponent = componentFactory.adhoc("js").apply {
val (wasmApi, wasmRuntime) = listOf("api", "runtime").map { usage ->
configurations.create("wasm${usage.capitalize()}") {
isCanBeConsumed = true
isCanBeResolved = false
isCanBeResolved = true
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-$usage"))
attribute(KotlinPlatformType.attribute, KotlinPlatformType.wasm)
@@ -321,7 +321,7 @@ val wasmComponent = componentFactory.adhoc("wasm").apply {
val commonMetadata by configurations.creating {
isCanBeConsumed = false
isCanBeResolved = false
isCanBeResolved = true
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
attribute(KotlinPlatformType.attribute, KotlinPlatformType.common)
@@ -329,7 +329,7 @@ val commonMetadata by configurations.creating {
}
val annotationsMetadata by configurations.creating {
isCanBeConsumed = false
isCanBeResolved = false
isCanBeResolved = true
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named("kotlin-api"))
attribute(KotlinPlatformType.attribute, KotlinPlatformType.common)
@@ -362,7 +362,7 @@ configureDefaultPublishing()
publishing {
publications {
create("main", MavenPublication::class) {
val mainPublication = register("main", MavenPublication::class) {
from(rootComponent)
artifact(combinedSourcesJar)
// Remove all optional dependencies from the root pom
@@ -376,39 +376,63 @@ publishing {
configureKotlinPomAttributes(project, "Kotlin Test Multiplatform library")
suppressAllPomMetadataWarnings()
}
configureSbom(
"Main", "kotlin-test",
setOf(jvmRuntime.name, commonVariant.name), mainPublication
)
jvmTestFrameworks.forEach { framework ->
create(framework, MavenPublication::class) {
val publication = register(framework, MavenPublication::class) {
artifactId = "kotlin-test-$framework"
from(components[framework])
artifact(tasks.getByPath(":kotlin-test:kotlin-test-$framework:sourcesJar") as Jar)
configureKotlinPomAttributes(project, "Kotlin Test Support for $framework")
suppressAllPomMetadataWarnings()
}
configureSbom(
framework.capitalize(), "kotlin-test-$framework",
setOf("${framework}Api", commonVariant.name), publication
)
}
create("js", MavenPublication::class) {
val kotlinTestJsPublication = register("js", MavenPublication::class) {
artifactId = "kotlin-test-js"
from(jsComponent)
artifact(tasks.getByPath(":kotlin-test:kotlin-test-js:sourcesJar") as Jar)
configureKotlinPomAttributes(project, "Kotlin Test for JS")
}
create("wasm", MavenPublication::class) {
configureSbom(
"Js", "kotlin-test-js",
setOf(jsRuntime.name, commonVariant.name), kotlinTestJsPublication
)
val kotlinTestWasmPublication = register("wasm", MavenPublication::class) {
artifactId = "kotlin-test-wasm"
from(wasmComponent)
artifact(tasks.getByPath(":kotlin-test:kotlin-test-wasm:sourcesJar") as Jar)
configureKotlinPomAttributes(project, "Kotlin Test for WASM", packaging = "klib")
}
create("common", MavenPublication::class) {
configureSbom(
"Wasm", "kotlin-test-wasm",
setOf(wasmRuntime.name, commonVariant.name), kotlinTestWasmPublication
)
val kotlinTestCommonPublication = register("common", MavenPublication::class) {
artifactId = "kotlin-test-common"
from(commonMetadataComponent)
artifact(tasks.getByPath(":kotlin-test:kotlin-test-common:sourcesJar") as Jar)
configureKotlinPomAttributes(project, "Kotlin Test Common")
}
create("annotationsCommon", MavenPublication::class) {
configureSbom(
"Common", "kotlin-test-common",
setOf(commonMetadata.name), kotlinTestCommonPublication
)
val annotationsCommonPublication = register("annotationsCommon", MavenPublication::class) {
artifactId = "kotlin-test-annotations-common"
from(annotationsMetadataComponent)
artifact(tasks.getByPath(":kotlin-test:kotlin-test-annotations-common:sourcesJar") as Jar)
configureKotlinPomAttributes(project, "Kotlin Test Common")
}
configureSbom(
"AnnotationsCommon", "kotlin-test-annotations-common",
setOf(annotationsMetadata.name), annotationsCommonPublication
)
withType<MavenPublication> {
artifact(emptyJavadocJar)
}