Browse Source

Don't publish `build-helpers`, use it directly

Fixes https://youtrack.jetbrains.com/issue/CMP-1339/Change-description-of-androidx-artifacts-in-Maven-Central-stage

We need some changes in it:
https://youtrack.jetbrains.com/issue/CMP-7198/Maven-Central-publication-publishes-old-artifacts-for-Core-Bundle
https://youtrack.jetbrains.com/issue/CMP-1339/Change-description-of-androidx-artifacts-in-Maven-Central-stage

and the current workflow is complicated:
- make changes
- publish this as a library in the dev repo
- add this as a dependency in some Gradle project (Example 2d8c5f479f/mpp/build.gradle.kts (L286))
- Run the gradle task on CI from compose-multiplatform-core project
```
clone compose-multiplatform-core
./gradlew reuploadArtifactsToMavenCentral --info --stacktrace -Pmaven.central.sign=true -Pmaven.central.group=$group -Pmaven.central.stage=$stage -Pmaven.central.version=$version -Pmaven.central.staging.close.after.upload=true
```
This task also doesn't use any of `compose-multiplatform-core` info, so it is overhead to store it as part of this project.

Now we just change some code, and it is already can be run by CI.

Related change on CI:
14790a5068

Related change in core:
TODO

## Testing
1. Run https://teamcity.jetbrains.com/buildConfiguration/JetBrainsPublicProjects_Compose_UploadToMavenCentralManually on branch igor.demin/upload-to-maven-central-without-library with:

2. See:
pull/5184/head
Igor Demin 2 days ago
parent
commit
83b9768859
  1. 78
      build-helpers/build.gradle.kts
  2. 1
      build-helpers/gradle.properties
  3. 51
      build-helpers/publishing/build.gradle.kts
  4. 1
      build-helpers/settings.gradle.kts
  5. 77
      ci/build-helpers/build.gradle.kts
  6. 26
      ci/build-helpers/buildSrc/build.gradle.kts
  7. 0
      ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/DownloadFromSpaceTask.kt
  8. 0
      ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/FindModulesInSpaceTask.kt
  9. 0
      ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/FixModulesBeforePublishingTask.kt
  10. 0
      ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/MavenCentralProperties.kt
  11. 0
      ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/ModuleToUpload.kt
  12. 0
      ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/UploadToSonatypeTask.kt
  13. 0
      ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/AbstractRestApiClient.kt
  14. 0
      ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/Checksum.kt
  15. 0
      ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/Json.kt
  16. 0
      ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/ModuleValidator.kt
  17. 0
      ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/PomDocument.kt
  18. 0
      ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/RequestError.kt
  19. 0
      ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/SonatypeApi.kt
  20. 0
      ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/SonatypeRestApiClient.kt
  21. 0
      ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/SpaceApiClient.kt
  22. 0
      ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/Xml.kt
  23. 0
      ci/build-helpers/gradle/wrapper/gradle-wrapper.jar
  24. 2
      ci/build-helpers/gradle/wrapper/gradle-wrapper.properties
  25. 0
      ci/build-helpers/gradlew
  26. 0
      ci/build-helpers/gradlew.bat
  27. 0
      ci/build-helpers/settings.gradle.kts

78
build-helpers/build.gradle.kts

@ -1,78 +0,0 @@
plugins {
kotlin("jvm") version "1.5.30" apply false
id("com.github.johnrengelman.shadow") version "7.1.0" apply false
}
subprojects {
group = "org.jetbrains.compose.internal.build-helpers"
version = project.property("deploy.version") as String
repositories {
mavenCentral()
}
plugins.withType(JavaBasePlugin::class.java) {
afterEvaluate {
configureIfExists<JavaPluginExtension> {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
if (sourceSets.names.contains(SourceSet.MAIN_SOURCE_SET_NAME)) {
withJavadocJar()
withSourcesJar()
}
}
}
}
plugins.withId("maven-publish") {
configureIfExists<PublishingExtension> {
configurePublishing(project)
}
}
}
fun PublishingExtension.configurePublishing(project: Project) {
repositories {
configureEach {
val repoName = name
project.tasks.register("publishTo${repoName}") {
group = "publishing"
dependsOn(project.tasks.named("publishAllPublicationsTo${repoName}Repository"))
}
}
maven {
name = "BuildRepo"
url = uri("${rootProject.buildDir}/repo")
}
maven {
name = "ComposeInternalRepo"
url = uri(
System.getenv("COMPOSE_INTERNAL_REPO_URL")
?: "https://maven.pkg.jetbrains.space/public/p/compose/internal"
)
credentials {
username =
System.getenv("COMPOSE_INTERNAL_REPO_USERNAME")
?: System.getenv("COMPOSE_REPO_USERNAME")
?: ""
password =
System.getenv("COMPOSE_INTERNAL_REPO_KEY")
?: System.getenv("COMPOSE_REPO_KEY")
?: ""
}
}
}
publications {
create<MavenPublication>("main") {
groupId = project.group.toString()
artifactId = project.name
version = project.version.toString()
from(project.components["java"])
}
}
}
inline fun <reified T> Project.configureIfExists(fn: T.() -> Unit) {
extensions.findByType(T::class.java)?.fn()
}

1
build-helpers/gradle.properties

@ -1 +0,0 @@
deploy.version=0.1.0-SNAPSHOT

51
build-helpers/publishing/build.gradle.kts

@ -1,51 +0,0 @@
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import org.gradle.kotlin.dsl.gradleKotlinDsl
plugins {
`java`
`maven-publish`
`java-gradle-plugin`
id("org.jetbrains.kotlin.jvm")
id("com.github.johnrengelman.shadow") apply false
}
repositories {
maven("https://maven.pkg.jetbrains.space/public/p/space/maven")
}
val embeddedDependencies by configurations.creating { isTransitive = false }
dependencies {
compileOnly(gradleApi())
compileOnly(gradleKotlinDsl())
compileOnly(kotlin("stdlib"))
fun embedded(dep: String) {
compileOnly(dep)
embeddedDependencies(dep)
}
val jacksonVersion = "2.12.5"
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:$jacksonVersion")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:$jacksonVersion")
implementation("io.ktor:ktor-client-okhttp:1.6.4")
implementation("org.apache.tika:tika-parsers:1.24.1")
implementation("org.jsoup:jsoup:1.14.3")
implementation("org.jetbrains:space-sdk-jvm:83821-beta")
embedded("de.undercouch:gradle-download-task:4.1.2")
}
val shadowJar by tasks.registering(ShadowJar::class) {
val fromPackage = "de.undercouch"
val toPackage = "org.jetbrains.compose.internal.publishing.$fromPackage"
relocate(fromPackage, toPackage)
archiveClassifier.set("shadow")
configurations = listOf(embeddedDependencies)
from(sourceSets["main"]!!.output)
exclude("META-INF/gradle-plugins/de.undercouch.download.properties")
}
val jar = tasks.named<Jar>("jar") {
dependsOn(shadowJar)
from(zipTree(shadowJar.get().archiveFile))
this.duplicatesStrategy = DuplicatesStrategy.INCLUDE
}

1
build-helpers/settings.gradle.kts

@ -1 +0,0 @@
include(":publishing")

77
ci/build-helpers/build.gradle.kts

@ -0,0 +1,77 @@
import org.jetbrains.compose.internal.publishing.*
plugins {
signing
}
val mavenCentral = MavenCentralProperties(project)
val mavenCentralGroup = project.providers.gradleProperty("maven.central.group")
val mavenCentralStage = project.providers.gradleProperty("maven.central.stage")
if (mavenCentral.signArtifacts) {
signing.useInMemoryPgpKeys(
mavenCentral.signArtifactsKey.get(),
mavenCentral.signArtifactsPassword.get()
)
}
val publishingDir = project.layout.buildDirectory.dir("publishing")
val originalArtifactsRoot = publishingDir.map { it.dir("original") }
val preparedArtifactsRoot = publishingDir.map { it.dir("prepared") }
val modulesFile = publishingDir.map { it.file("modules.txt") }
val findComposeModules by tasks.registering(FindModulesInSpaceTask::class) {
requestedGroupId.set(mavenCentralGroup)
requestedVersion.set(mavenCentral.version)
spaceInstanceUrl.set("https://public.jetbrains.space")
spaceClientId.set(System.getenv("COMPOSE_REPO_USERNAME") ?: "")
spaceClientSecret.set(System.getenv("COMPOSE_REPO_KEY") ?: "")
spaceProjectId.set(System.getenv("COMPOSE_DEV_REPO_PROJECT_ID") ?: "")
spaceRepoId.set(System.getenv("COMPOSE_DEV_REPO_REPO_ID") ?: "")
modulesTxtFile.set(modulesFile)
}
val downloadArtifactsFromComposeDev by tasks.registering(DownloadFromSpaceMavenRepoTask::class) {
dependsOn(findComposeModules)
modulesToDownload.set(project.provider {
readComposeModules(
modulesFile,
originalArtifactsRoot
)
})
spaceRepoUrl.set("https://maven.pkg.jetbrains.space/public/p/compose/dev")
}
val fixModulesBeforePublishing by tasks.registering(FixModulesBeforePublishingTask::class) {
dependsOn(downloadArtifactsFromComposeDev)
inputRepoDir.set(originalArtifactsRoot)
outputRepoDir.set(preparedArtifactsRoot)
}
val reuploadArtifactsToMavenCentral by tasks.registering(UploadToSonatypeTask::class) {
dependsOn(fixModulesBeforePublishing)
version.set(mavenCentral.version)
modulesToUpload.set(project.provider { readComposeModules(modulesFile, preparedArtifactsRoot) })
sonatypeServer.set("https://oss.sonatype.org")
user.set(mavenCentral.user)
password.set(mavenCentral.password)
autoCommitOnSuccess.set(mavenCentral.autoCommitOnSuccess)
stagingProfileName.set(mavenCentralStage)
}
fun readComposeModules(
modulesFile: Provider<out FileSystemLocation>,
repoRoot: Provider<out FileSystemLocation>
): List<ModuleToUpload> =
modulesFile.get().asFile.readLines()
.filter { it.isNotBlank() }
.map { line ->
val (group, artifact, version) = line.split(":")
ModuleToUpload(
groupId = group,
artifactId = artifact,
version = version,
localDir = repoRoot.get().asFile.resolve("$group/$artifact/$version")
)
}

26
ci/build-helpers/buildSrc/build.gradle.kts

@ -0,0 +1,26 @@
import org.gradle.kotlin.dsl.gradleKotlinDsl
plugins {
`java`
`java-gradle-plugin`
kotlin("jvm") version "1.9.24"
}
repositories {
mavenCentral()
maven("https://maven.pkg.jetbrains.space/public/p/space/maven")
}
dependencies {
compileOnly(gradleApi())
compileOnly(gradleKotlinDsl())
val jacksonVersion = "2.12.5"
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:$jacksonVersion")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:$jacksonVersion")
implementation("io.ktor:ktor-client-okhttp:1.6.4")
implementation("org.apache.tika:tika-parsers:1.24.1")
implementation("org.jsoup:jsoup:1.14.3")
implementation("org.jetbrains:space-sdk-jvm:83821-beta")
implementation("de.undercouch:gradle-download-task:4.1.2")
}

0
build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/DownloadFromSpaceTask.kt → ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/DownloadFromSpaceTask.kt

0
build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/FindModulesInSpaceTask.kt → ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/FindModulesInSpaceTask.kt

0
build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/FixModulesBeforePublishingTask.kt → ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/FixModulesBeforePublishingTask.kt

0
build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/MavenCentralProperties.kt → ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/MavenCentralProperties.kt

0
build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/ModuleToUpload.kt → ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/ModuleToUpload.kt

0
build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/UploadToSonatypeTask.kt → ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/UploadToSonatypeTask.kt

0
build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/AbstractRestApiClient.kt → ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/AbstractRestApiClient.kt

0
build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/Checksum.kt → ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/Checksum.kt

0
build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/Json.kt → ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/Json.kt

0
build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/ModuleValidator.kt → ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/ModuleValidator.kt

0
build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/PomDocument.kt → ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/PomDocument.kt

0
build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/RequestError.kt → ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/RequestError.kt

0
build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/SonatypeApi.kt → ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/SonatypeApi.kt

0
build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/SonatypeRestApiClient.kt → ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/SonatypeRestApiClient.kt

0
build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/SpaceApiClient.kt → ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/SpaceApiClient.kt

0
build-helpers/publishing/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/Xml.kt → ci/build-helpers/buildSrc/src/main/kotlin/org/jetbrains/compose/internal/publishing/utils/Xml.kt

0
build-helpers/gradle/wrapper/gradle-wrapper.jar → ci/build-helpers/gradle/wrapper/gradle-wrapper.jar vendored

2
build-helpers/gradle/wrapper/gradle-wrapper.properties → ci/build-helpers/gradle/wrapper/gradle-wrapper.properties vendored

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

0
build-helpers/gradlew → ci/build-helpers/gradlew vendored

0
build-helpers/gradlew.bat → ci/build-helpers/gradlew.bat vendored

0
ci/build-helpers/settings.gradle.kts

Loading…
Cancel
Save