Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove bintray publish plugins #2364

Merged
merged 6 commits into from Mar 22, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
8 changes: 0 additions & 8 deletions build.gradle.kts
Expand Up @@ -67,14 +67,6 @@ subprojects {
}
}

// Workaround for https://github.com/bintray/gradle-bintray-plugin/issues/267
// Manually disable bintray tasks added to the root project
tasks.whenTaskAdded {
if ("bintray" in name) {
enabled = false
}
}

println("Publication version: $dokka_version")
tasks.register<ValidatePublications>("validatePublications")

Expand Down
3 changes: 1 addition & 2 deletions buildSrc/build.gradle.kts
Expand Up @@ -7,8 +7,7 @@ repositories {
}

dependencies {
implementation("com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4")
implementation("com.github.jengelman.gradle.plugins:shadow:2.0.4")
implementation("org.jetbrains.kotlinx:binary-compatibility-validator:0.6.0")
implementation("org.jetbrains.kotlinx:binary-compatibility-validator:0.8.0")
implementation("io.github.gradle-nexus:publish-plugin:1.0.0")
}
15 changes: 0 additions & 15 deletions buildSrc/src/main/kotlin/org/jetbrains/DokkaPublicationChannel.kt
Expand Up @@ -6,20 +6,11 @@ import org.gradle.api.Project

enum class DokkaPublicationChannel {
SpaceDokkaDev,
BintrayKotlinDev,
BintrayKotlinEap,
BintrayKotlinDokka,
MavenCentral,
MavenCentralSnapshot;

val isSpaceRepository get() = this == SpaceDokkaDev

val isBintrayRepository
get() = when (this) {
BintrayKotlinDev, BintrayKotlinEap, BintrayKotlinDokka -> true
else -> false
}

val isMavenRepository
get() = when (this) {
MavenCentral, MavenCentralSnapshot -> true
Expand All @@ -31,17 +22,11 @@ enum class DokkaPublicationChannel {
MavenCentral -> listOf(DokkaVersionType.Release)
MavenCentralSnapshot -> listOf(DokkaVersionType.Snapshot)
SpaceDokkaDev -> listOf(DokkaVersionType.Release, DokkaVersionType.Dev, DokkaVersionType.MC, DokkaVersionType.Snapshot)
BintrayKotlinDev -> listOf(DokkaVersionType.Dev, DokkaVersionType.MC, DokkaVersionType.Snapshot)
BintrayKotlinEap -> listOf(DokkaVersionType.MC)
BintrayKotlinDokka -> listOf(DokkaVersionType.Release)
}

companion object {
fun fromPropertyString(value: String): DokkaPublicationChannel = when (value) {
"space-dokka-dev" -> SpaceDokkaDev
"bintray-kotlin-dev" -> BintrayKotlinDev
"bintray-kotlin-eap" -> BintrayKotlinEap
"bintray-kotlin-dokka" -> BintrayKotlinDokka
"maven-central-release" -> MavenCentral
"maven-central-snapshot" -> MavenCentralSnapshot
else -> throw IllegalArgumentException("Unknown dokka_publication_channel=$value")
Expand Down
20 changes: 0 additions & 20 deletions buildSrc/src/main/kotlin/org/jetbrains/ValidatePublications.kt
@@ -1,6 +1,5 @@
package org.jetbrains

import com.jfrog.bintray.gradle.BintrayExtension
import org.gradle.api.DefaultTask
import org.gradle.api.GradleException
import org.gradle.api.Project
Expand All @@ -9,12 +8,8 @@ import org.gradle.api.publish.PublishingExtension
import org.gradle.api.publish.maven.MavenPublication
import org.gradle.api.tasks.TaskAction
import org.gradle.kotlin.dsl.findByType
import org.gradle.kotlin.dsl.provideDelegate

open class ValidatePublications : DefaultTask() {
class MissingBintrayPublicationException(project: Project, publication: MavenPublication) : GradleException(
"Project ${project.path} has publication ${publication.name} that is not configured for bintray publication"
)

class UnpublishedProjectDependencyException(
project: Project, dependencyProject: Project
Expand All @@ -32,27 +27,12 @@ open class ValidatePublications : DefaultTask() {
.filterIsInstance<MavenPublication>()
.filter { it.version == project.dokkaVersion }
.forEach { publication ->
if (project.publicationChannels.any { it.isBintrayRepository }) {
checkPublicationIsConfiguredForBintray(subProject, publication)
}
checkProjectDependenciesArePublished(subProject)
subProject.assertPublicationVersion()
}
}
}

private fun checkPublicationIsConfiguredForBintray(project: Project, publication: MavenPublication) {
val bintrayExtension = project.extensions.findByType<BintrayExtension>()
?: throw MissingBintrayPublicationException(project, publication)

val isPublicationConfiguredForBintray = bintrayExtension.publications.orEmpty()
.any { publicationName -> publicationName == publication.name }

if (!isPublicationConfiguredForBintray) {
throw MissingBintrayPublicationException(project, publication)
}
}

private fun checkProjectDependenciesArePublished(project: Project) {
(project.configurations.findByName("implementation")?.allDependencies.orEmpty() +
project.configurations.findByName("api")?.allDependencies.orEmpty())
Expand Down
6 changes: 2 additions & 4 deletions buildSrc/src/main/kotlin/org/jetbrains/binaryCompatibility.kt
Expand Up @@ -16,14 +16,12 @@ internal object BinaryCompatibilityConfig {
}

internal fun Project.registerBinaryCompatibilityCheck(publicationName: String) {
publicationName.takeIf {
it !in BinaryCompatibilityConfig.ignoredPublications
}?.let {
if (publicationName !in BinaryCompatibilityConfig.ignoredPublications) {
if (tasks.findByName("apiBuild") == null) {
plugins.apply(kotlinx.validation.BinaryCompatibilityValidatorPlugin::class.java)
configure<ApiValidationExtension> {
ignoredProjects.addAll(
BinaryCompatibilityConfig.ignoredSubprojects.intersect(allprojects.map { it.name })
BinaryCompatibilityConfig.ignoredSubprojects.intersect(allprojects.map { it.name }.toSet())
)
}
}
Expand Down
48 changes: 0 additions & 48 deletions buildSrc/src/main/kotlin/org/jetbrains/publication.kt
@@ -1,16 +1,13 @@
package org.jetbrains

import com.github.jengelman.gradle.plugins.shadow.ShadowExtension
import com.jfrog.bintray.gradle.BintrayExtension
import kotlinx.validation.ApiValidationExtension
import org.gradle.api.Project
import org.gradle.api.publish.PublishingExtension
import org.gradle.api.publish.maven.MavenPublication
import org.gradle.api.publish.maven.tasks.PublishToMavenRepository
import org.gradle.kotlin.dsl.*
import org.gradle.plugins.signing.SigningExtension
import org.jetbrains.DokkaPublicationChannel.*
import io.github.gradlenexus.publishplugin.NexusPublishExtension
import java.net.URI

class DokkaPublicationBuilder {
Expand Down Expand Up @@ -42,7 +39,6 @@ fun Project.registerDokkaArtifactPublication(publicationName: String, configure:
}
}

configureBintrayPublicationIfNecessary(publicationName)
configureSpacePublicationIfNecessary(publicationName)
configureSonatypePublicationIfNecessary(publicationName)
createDokkaPublishTaskIfNecessary()
Expand Down Expand Up @@ -88,50 +84,6 @@ fun Project.createDokkaPublishTaskIfNecessary() {
if (publicationChannels.any { it.isMavenRepository }) {
dependsOn(tasks.named("publishToSonatype"))
}

if (publicationChannels.any { it.isBintrayRepository }) {
dependsOn(tasks.named("bintrayUpload"))
}
}
}

fun Project.configureBintrayPublicationIfNecessary(vararg publications: String) {
if (publicationChannels.any { it.isBintrayRepository }) {
configureBintrayPublication(*publications)
}
}

private fun Project.configureBintrayPublication(vararg publications: String) {
extensions.configure<BintrayExtension>("bintray") {
user = System.getenv("BINTRAY_USER")
key = System.getenv("BINTRAY_KEY")
dryRun = System.getenv("BINTRAY_DRY_RUN") == "true" ||
project.properties["bintray_dry_run"] == "true"
pkg = PackageConfig().apply {
val bintrayPublicationChannels = publicationChannels.filter { it.isBintrayRepository }
if (bintrayPublicationChannels.size > 1) {
throw IllegalArgumentException(
"Only a single bintray repository can be used for publishing at once. Found $publicationChannels"
)
}

repo = when (bintrayPublicationChannels.single()) {
SpaceDokkaDev, MavenCentral, MavenCentralSnapshot -> throw IllegalStateException("${bintrayPublicationChannels.single()} is not a bintray repository")
BintrayKotlinDev -> "kotlin-dev"
BintrayKotlinEap -> "kotlin-eap"
BintrayKotlinDokka -> "dokka"
}

name = "dokka"
userOrg = "kotlin"
desc = "Dokka, the Kotlin documentation tool"
vcsUrl = "https://github.com/kotlin/dokka.git"
setLicenses("Apache-2.0")
version = VersionConfig().apply {
name = dokkaVersion
}
}
setPublications(*publications)
}
}

Expand Down
1 change: 0 additions & 1 deletion core/build.gradle.kts
Expand Up @@ -3,7 +3,6 @@ import org.jetbrains.registerDokkaArtifactPublication

plugins {
`maven-publish`
id("com.jfrog.bintray")
}

dependencies {
Expand Down
1 change: 0 additions & 1 deletion core/test-api/build.gradle.kts
Expand Up @@ -2,7 +2,6 @@ import org.jetbrains.registerDokkaArtifactPublication

plugins {
`maven-publish`
id("com.jfrog.bintray")
}

dependencies {
Expand Down
1 change: 0 additions & 1 deletion kotlin-analysis/build.gradle.kts
Expand Up @@ -3,7 +3,6 @@ import org.jetbrains.registerDokkaArtifactPublication
plugins {
id("com.github.johnrengelman.shadow")
`maven-publish`
id("com.jfrog.bintray")
}

dependencies {
Expand Down
1 change: 0 additions & 1 deletion kotlin-analysis/compiler-dependency/build.gradle.kts
Expand Up @@ -4,7 +4,6 @@ import org.jetbrains.registerDokkaArtifactPublication
plugins {
id("com.github.johnrengelman.shadow")
`maven-publish`
id("com.jfrog.bintray")
}

dependencies {
Expand Down
1 change: 0 additions & 1 deletion kotlin-analysis/intellij-dependency/build.gradle.kts
Expand Up @@ -4,7 +4,6 @@ import org.jetbrains.registerDokkaArtifactPublication
plugins {
id("com.github.johnrengelman.shadow")
`maven-publish`
id("com.jfrog.bintray")
}

repositories {
Expand Down
1 change: 0 additions & 1 deletion plugins/build.gradle.kts
Expand Up @@ -4,7 +4,6 @@ import org.gradle.api.tasks.testing.logging.TestLogEvent
subprojects {
apply {
plugin("maven-publish")
plugin("com.jfrog.bintray")
}

dependencies {
Expand Down
1 change: 0 additions & 1 deletion runners/build.gradle.kts
@@ -1,7 +1,6 @@
subprojects {
apply {
plugin("maven-publish")
plugin("com.jfrog.bintray")
}

tasks.processResources {
Expand Down
1 change: 0 additions & 1 deletion runners/cli/build.gradle.kts
Expand Up @@ -3,7 +3,6 @@ import org.jetbrains.registerDokkaArtifactPublication

plugins {
id("com.github.johnrengelman.shadow")
id("com.jfrog.bintray")
}

dependencies {
Expand Down
1 change: 0 additions & 1 deletion runners/gradle-plugin/build.gradle.kts
Expand Up @@ -97,7 +97,6 @@ tasks.withType<PublishToMavenRepository>().configureEach {
}

afterEvaluate { // Workaround for an interesting design choice https://github.com/gradle/gradle/blob/c4f935f77377f1783f70ec05381c8182b3ade3ea/subprojects/plugin-development/src/main/java/org/gradle/plugin/devel/plugins/MavenPluginPublishPlugin.java#L49
configureBintrayPublicationIfNecessary("pluginMaven", "dokkaGradlePluginPluginMarkerMaven")
configureSpacePublicationIfNecessary("pluginMaven", "dokkaGradlePluginPluginMarkerMaven")
configureSonatypePublicationIfNecessary("pluginMaven", "dokkaGradlePluginPluginMarkerMaven")
createDokkaPublishTaskIfNecessary()
Expand Down
1 change: 0 additions & 1 deletion settings.gradle.kts
Expand Up @@ -43,7 +43,6 @@ pluginManagement {
plugins {
id("org.jetbrains.kotlin.jvm") version kotlin_version
id("com.github.johnrengelman.shadow") version "5.2.0"
id("com.jfrog.bintray") version "1.8.5"
id("com.gradle.plugin-publish") version "0.20.0"
}
}