Skip to content

Commit

Permalink
Fix release to maven central (#1788)
Browse files Browse the repository at this point in the history
- added sources for all modules
- refactored creating publication for gradle plugin
  • Loading branch information
nulls authored Nov 10, 2023
1 parent d48f947 commit 63018da
Show file tree
Hide file tree
Showing 13 changed files with 108 additions and 55 deletions.
10 changes: 4 additions & 6 deletions .github/workflows/diktat_snapshot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,6 @@ jobs:
with:
gradle-version: wrapper
arguments: |
:diktat-api:publishToMavenLocal
:diktat-common:publishToMavenLocal
:diktat-ktlint-engine:publishToMavenLocal
:diktat-rules:publishToMavenLocal
:diktat-gradle-plugin:publishToMavenLocal
:generateLibsForDiktatSnapshot
-x detekt
-x test
Expand All @@ -59,7 +54,10 @@ jobs:
- name: 'Override <gradle/libs.versions.toml>'
run: |
mv gradle/libs.versions.toml gradle/libs.versions.toml_current
mv build/diktat-snapshot/libs.versions.toml_snapshot gradle/libs.versions.toml
mv build/diktat-snapshot/libs.versions.toml gradle/libs.versions.toml
mv gradle/plugins/src/main/kotlin/com/saveourtool/diktat/buildutils/diktat-convention-configuration.gradle.kts gradle/plugins/src/main/kotlin/com/saveourtool/diktat/buildutils/diktat-convention-configuration.gradle.kts_current
mv build/diktat-snapshot/diktat-convention-configuration.gradle.kts gradle/plugins/src/main/kotlin/com/saveourtool/diktat/buildutils/diktat-convention-configuration.gradle.kts
# copied from .github/workflows/diktat.yml
- uses: gradle/gradle-build-action@v2
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@

![Build and test](https://github.com/saveourtool/diKTat/workflows/Build%20and%20test/badge.svg?branch=master)
![deteKT static analysis](https://github.com/saveourtool/diKTat/workflows/Run%20deteKT/badge.svg)
![diKTat code style](https://github.com/saveourtool/diKTat/workflows/Run%20diKTat%20from%20release%20version/badge.svg?branch=master)
![diKTat code style](https://github.com/saveourtool/diKTat/workflows/Run%20diKTat%20%28release%29/badge.svg?branch=master)
[![codecov](https://codecov.io/gh/saveourtool/diKTat/branch/master/graph/badge.svg)](https://codecov.io/gh/saveourtool/diKTat)

[![Releases](https://img.shields.io/github/v/release/saveourtool/diKTat)](https://github.com/saveourtool/diKTat/releases)
[![Maven Central](https://img.shields.io/maven-central/v/com.saveourtool.diktat/diktat-rules)](https://mvnrepository.com/artifact/com.saveourtool.diktat)
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgit.luolix.top%2Fsaveourtool%2FdiKTat.svg?type=shield)](https://app.fossa.com/projects/git%2Bgit.luolix.top%2Fsaveourtool%2FdiKTat?ref=badge_shield)
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgit.luolix.top%2Fsaveourtool%2Fdiktat.svg?type=shield)](https://app.fossa.com/projects/git%2Bgit.luolix.top%2Fsaveourtool%2Fdiktat?ref=badge_shield)
[![Chat on Telegram](https://img.shields.io/badge/Chat%20on-Telegram-brightgreen.svg)](https://t.me/diktat_help)

[![Hits-of-Code](https://hitsofcode.com/github/saveourtool/diktat)](https://hitsofcode.com/view/github/saveourtool/diktat)
Expand Down
19 changes: 17 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,13 @@ tasks.create("generateLibsForDiktatSnapshot") {
rootProject.project(":diktat-rules"),
rootProject.project(":diktat-gradle-plugin"),
)
mustRunAfter(dependencies.map { "${it.path}:publishToMavenLocal" })
dependsOn(dependencies.map { "${it.path}:publishToMavenLocal" })

val libsFile = rootProject.file("gradle/libs.versions.toml")
val diktatGradleFile = rootProject.file("gradle/plugins/src/main/kotlin/com/saveourtool/diktat/buildutils/diktat-convention-configuration.gradle.kts")

inputs.file(libsFile)
inputs.file(diktatGradleFile)
inputs.files(dependencies.map { it.pomFile() })
inputs.files(dependencies.map { it.artifactFile() })
inputs.property("project-version", version.toString())
Expand All @@ -61,10 +64,22 @@ tasks.create("generateLibsForDiktatSnapshot") {
}
}
.let {
val libsFileForDiktatSnapshot = dir.resolve("libs.versions.toml_snapshot")
val libsFileForDiktatSnapshot = dir.resolve("libs.versions.toml")
Files.write(libsFileForDiktatSnapshot.toPath(), it)
}

Files.readAllLines(diktatGradleFile.toPath())
.map { line ->
when {
line.contains("com.saveourtool.diktat.diktat-gradle-plugin") -> line.replace("com.saveourtool.diktat.diktat-gradle-plugin", "com.saveourtool.diktat")
else -> line
}
}
.let {
val diktatGradleFileForDiktatSnapshot = dir.resolve("diktat-convention-configuration.gradle.kts")
Files.write(diktatGradleFileForDiktatSnapshot.toPath(), it)
}

dependencies.forEach { dependency ->
val artifactDir = dir.pathToMavenArtifact(dependency)
.also { it.createDirectory() }
Expand Down
2 changes: 2 additions & 0 deletions diktat-cli/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import com.saveourtool.diktat.buildutils.configurePublications
import com.github.jengelman.gradle.plugins.shadow.ShadowExtension
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
import org.jetbrains.kotlin.incremental.createDirectory
Expand Down Expand Up @@ -92,3 +93,4 @@ publishing {
}
}
}
configurePublications()
31 changes: 17 additions & 14 deletions diktat-gradle-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import com.saveourtool.diktat.buildutils.configurePom
import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform.getCurrentOperatingSystem
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
id("com.saveourtool.diktat.buildutils.kotlin-jvm-configuration")
id("com.saveourtool.diktat.buildutils.code-quality-convention")
id("com.saveourtool.diktat.buildutils.publishing-default-configuration")
id("com.saveourtool.diktat.buildutils.publishing-configuration")
id("pl.droidsonroids.jacoco.testkit") version "1.0.12"
id("org.gradle.test-retry") version "1.5.6"
id("com.gradle.plugin-publish") version "1.2.1"
Expand Down Expand Up @@ -38,14 +39,28 @@ tasks.withType<KotlinCompile> {
}

gradlePlugin {
website = "https://diktat.saveourtool.com/"
vcsUrl = "https://github.com/saveourtool/diktat"
plugins {
create("diktatPlugin") {
id = "com.saveourtool.diktat.diktat-gradle-plugin"
id = "com.saveourtool.diktat"
implementationClass = "com.saveourtool.diktat.plugin.gradle.DiktatGradlePlugin"
}
}
}

afterEvaluate {
publishing {
publications {
withType<MavenPublication> {
pom {
configurePom(project)
}
}
}
}
}

// === testing & code coverage, jacoco is run independent from maven
val functionalTestTask by tasks.register<Test>("functionalTest")
tasks.withType<Test> {
Expand Down Expand Up @@ -103,15 +118,3 @@ tasks.jacocoTestReport {
xml.required.set(true)
}
}

afterEvaluate {
tasks.named("javadocJar") {
enabled = false
}
tasks.named("generateMetadataFileForPluginMavenPublication") {
dependsOn(tasks.named("dokkaJar"))
}
tasks.named("generateMetadataFileForMavenPublication") {
dependsOn(tasks.named("dokkaJar"))
}
}
2 changes: 2 additions & 0 deletions diktat-maven-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import com.saveourtool.diktat.buildutils.configurePublications
import de.benediktritter.maven.plugin.development.task.GenerateHelpMojoSourcesTask
import de.benediktritter.maven.plugin.development.task.GenerateMavenPluginDescriptorTask

Expand Down Expand Up @@ -47,3 +48,4 @@ publishing {
}
}
}
configurePublications()
2 changes: 2 additions & 0 deletions diktat-ruleset/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import com.saveourtool.diktat.buildutils.configurePom
import com.saveourtool.diktat.buildutils.configurePublications
import com.github.jengelman.gradle.plugins.shadow.ShadowExtension
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar

Expand Down Expand Up @@ -73,3 +74,4 @@ publishing {
}
}
}
configurePublications()
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ import org.jetbrains.dokka.gradle.DokkaPlugin
* Configures all aspects of the publishing process.
*/
fun Project.configurePublishing() {
configurePublications()
apply<MavenPublishPlugin>()
if (this == rootProject) {
configureNexusPublishing()
Expand Down Expand Up @@ -95,6 +94,36 @@ fun MavenPom.configurePom(project: Project) {
}
}

/**
* Configures all publications. The publications must already exist.
*/
@Suppress("TOO_LONG_FUNCTION")
fun Project.configurePublications() {
if (this == rootProject) {
return
}
val sourcesJar = tasks.named(SOURCES_JAR)
apply<DokkaPlugin>()
@Suppress("GENERIC_VARIABLE_WRONG_DECLARATION")
val dokkaJarProvider = tasks.register<Jar>("dokkaJar") {
group = "documentation"
archiveClassifier.set("javadoc")
from(tasks.named("dokkaHtml"))
}
configure<PublishingExtension> {
repositories {
mavenLocal()
}
publications.withType<MavenPublication>().configureEach {
artifact(sourcesJar)
artifact(dokkaJarProvider)
pom {
configurePom(project)
}
}
}
}

/**
* Configures Maven Central as the publish destination.
*/
Expand Down Expand Up @@ -157,34 +186,6 @@ private fun Project.configureGitHubPublishing() {
}
}

/**
* Configures all publications. The publications must already exist.
*/
@Suppress("TOO_LONG_FUNCTION")
private fun Project.configurePublications() {
if (this == rootProject) {
return
}
apply<DokkaPlugin>()
@Suppress("GENERIC_VARIABLE_WRONG_DECLARATION")
val dokkaJarProvider = tasks.register<Jar>("dokkaJar") {
group = "documentation"
archiveClassifier.set("javadoc")
from(tasks.named("dokkaHtml"))
}
configure<PublishingExtension> {
repositories {
mavenLocal()
}
publications.withType<MavenPublication>().configureEach {
artifact(dokkaJarProvider)
pom {
configurePom(project)
}
}
}
}

/**
* Enables signing of the artifacts if the `signingKey` project property is set.
*
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/**
* Names for common tasks
*/

package com.saveourtool.diktat.buildutils

/**
* Tasks with sources
*/
const val SOURCES_JAR = "sourcesJar"
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
package com.saveourtool.diktat.buildutils

import org.ajoberstar.reckon.core.Scope
import org.ajoberstar.reckon.core.VersionTagParser
import org.ajoberstar.reckon.gradle.ReckonExtension
import org.ajoberstar.reckon.gradle.ReckonPlugin
import org.eclipse.jgit.api.Git
Expand All @@ -13,6 +14,7 @@ import org.eclipse.jgit.storage.file.FileRepositoryBuilder
import org.gradle.api.Project
import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.configure
import java.util.Optional

/**
* Configures reckon plugin for [this] project, should be applied for root project only
Expand All @@ -23,7 +25,19 @@ fun Project.configureVersioning() {
// should be provided in the gradle.properties
configure<ReckonExtension> {
setDefaultInferredScope(Scope.MINOR.name)
snapshots()
if (findProperty("reckon.stage")?.toString() == "snapshot") {
snapshots()
// skip -rc candidates tags
setTagParser { tagName ->
if (tagName.contains("-rc.[0-9]+".toRegex())) {
Optional.empty()
} else {
VersionTagParser.getDefault().parse(tagName)
}
}
} else {
stages("rc", "final")
}
setScopeCalc(calcScopeFromProp())
setStageCalc(calcStageFromProp())
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ plugins {
}

detekt {
config = rootProject.files("detekt-config.yml")
config.setFrom(rootProject.files("detekt-config.yml"))
basePath = rootDir.canonicalPath
buildUponDefaultConfig = true
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ kotlin {
}
}

tasks.register<Jar>(SOURCES_JAR) {
archiveClassifier.set("sources")
from(kotlin.sourceSets.main.map { it.kotlin })
}

configureJacoco()
tasks.withType<Test> {
useJUnitPlatform()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,5 @@ publishing {
}
}

configurePublications()
configurePublishing()

0 comments on commit 63018da

Please sign in to comment.