Skip to content

Commit

Permalink
Don't publish build-helpers, use it directly
Browse files Browse the repository at this point in the history
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 https://github.com/JetBrains/compose-multiplatform-core/blob/2d8c5f479f590305b9fedc744e00fdc9c276bbb9/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:
https://jetbrains.team/p/ui/repositories/compose-teamcity-config/revision/14790a506883923b25ef9ef4d05802f6210362f3

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:
  • Loading branch information
igordmn committed Dec 12, 2024
1 parent 6ad5285 commit 83b9768
Show file tree
Hide file tree
Showing 27 changed files with 104 additions and 132 deletions.
78 changes: 0 additions & 78 deletions build-helpers/build.gradle.kts

This file was deleted.

1 change: 0 additions & 1 deletion build-helpers/gradle.properties

This file was deleted.

51 changes: 0 additions & 51 deletions build-helpers/publishing/build.gradle.kts

This file was deleted.

1 change: 0 additions & 1 deletion build-helpers/settings.gradle.kts

This file was deleted.

77 changes: 77 additions & 0 deletions ci/build-helpers/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -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 changes: 26 additions & 0 deletions ci/build-helpers/buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -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")
}
Original file line number Diff line number Diff line change
@@ -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
File renamed without changes.
File renamed without changes.
Empty file.

0 comments on commit 83b9768

Please sign in to comment.