Skip to content

Commit 352c5b4

Browse files
committed
migrate to Sonatype portal publisher.
1 parent 1816af0 commit 352c5b4

File tree

4 files changed

+49
-98
lines changed

4 files changed

+49
-98
lines changed

.github/workflows/actions.yml

Lines changed: 19 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -11,85 +11,62 @@ jobs:
1111
strategy:
1212
fail-fast: false
1313
matrix:
14-
os: [ubuntu-22.04, macos-13, macos-14]
14+
os: [ubuntu-24.04, macos-13, macos-14]
1515
steps:
1616
- name: checkout
1717
uses: actions/checkout@v4
1818
with:
1919
submodules: recursive
2020
- name: setup apt packages on Linux
21-
if: matrix.os == 'ubuntu-22.04'
21+
if: matrix.os == 'ubuntu-24.04'
2222
run: |
2323
sudo apt-get update
2424
echo y | sudo apt-get install doxygen cmake ninja-build libasound2-dev
25-
- name: set up JDK 21
25+
- name: set up JDK 22
2626
uses: actions/setup-java@v4
2727
with:
28-
java-version: 21
28+
java-version: 22
2929
distribution: temurin
3030

31-
# only for release tags
32-
- name: setup gpg necessities
33-
if: startsWith(github.ref, 'refs/tags/')
34-
shell: bash
35-
run: |
36-
mkdir -p '${{ github.workspace }}'
37-
echo '${{ secrets.GPG_KEY_CONTENTS }}' | base64 -d > '${{ github.workspace }}/${{ secrets.SIGNING_SECRET_KEY_RING_FILE }}'
38-
- name: rewrite build.gradle to require signing on awkward OS
39-
if: startsWith(github.ref, 'refs/tags/') && contains(matrix.os, 'macos')
40-
run: |
41-
sed -i "" "s/signing {}/signing { sign(publishing.publications) }/" */build.gradle*
42-
- name: rewrite build.gradle to require signing on standard OS
43-
shell: bash
44-
if: startsWith(github.ref, 'refs/tags/') && !contains(matrix.os, 'macos')
45-
run: |
46-
sed -i "s/signing {}/signing { sign(publishing.publications) }/" */build.gradle*
47-
4831
# only for NON-releases on macos-13
4932
- name: macos-13 lightweight build with Gradle for libs
5033
if: ${{ !startsWith(github.ref, 'refs/tags/') && contains(matrix.os, 'macos-13') }}
5134
run: ./gradlew --warning-mode all publishToMavenLocal
5235
# only for releases on macos-13
5336
- name: macos-13 lightweight publish with Gradle for libs
5437
if: ${{ startsWith(github.ref, 'refs/tags/') && contains(matrix.os, 'macos-13') }}
55-
run: ./gradlew --no-daemon --warning-mode all publishMacosX64PublicationToOSSRHRepository publishIosX64PublicationToOSSRHRepository
38+
run: ./gradlew --no-daemon --warning-mode all publishMacosX64PublicationToMavenCentralRepository publishIosX64PublicationToMavenCentralRepository
5639
env:
57-
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
58-
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
59-
OSSRH_STAGING_REPOSITORY_ID: ${{ needs.create_staging_repository.outputs.repository_id }}
60-
SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }}
61-
SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
62-
SIGNING_SECRET_KEY_RING_FILE: ${{ format('{0}/{1}', github.workspace, secrets.SIGNING_SECRET_KEY_RING_FILE) }}
40+
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
41+
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
42+
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_PASSWORD }}
43+
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.GPG_KEY_CONTENTS }}
6344
# only for NON-releases on macos-14
6445
- name: macos-14 lightweight build with Gradle for libs and apps
6546
if: ${{ !startsWith(github.ref, 'refs/tags/') && contains(matrix.os, 'macos-14') }}
6647
run: ./gradlew --warning-mode all publishToMavenLocal
6748
# only for releases on macos-14
6849
- name: macos-14 lightweight publish with Gradle for libs and apps
6950
if: ${{ startsWith(github.ref, 'refs/tags/') && contains(matrix.os, 'macos-14') }}
70-
run: ./gradlew --no-daemon --warning-mode all publishMacosArm64PublicationToOSSRHRepository PublishIosArm64PublicationToOSSRHRepository PublishIosSimulatorArm64PublicationToOSSRHRepository
51+
run: ./gradlew --no-daemon --warning-mode all publishMacosArm64PublicationToMavenCentralRepository PublishIosArm64PublicationToMavenCentralRepository PublishIosSimulatorArm64PublicationToMavenCentralRepository
7152
env:
72-
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
73-
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
74-
OSSRH_STAGING_REPOSITORY_ID: ${{ needs.create_staging_repository.outputs.repository_id }}
75-
SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }}
76-
SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
77-
SIGNING_SECRET_KEY_RING_FILE: ${{ format('{0}/{1}', github.workspace, secrets.SIGNING_SECRET_KEY_RING_FILE) }}
53+
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
54+
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
55+
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_PASSWORD }}
56+
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.GPG_KEY_CONTENTS }}
7857
# only for NON-releases on Linux
7958
- name: linux build
8059
if: ${{ !startsWith(github.ref, 'refs/tags/') && contains(matrix.os, 'ubuntu') }}
8160
run: ./gradlew --warning-mode all build publishToMavenLocal
8261
# only for releases on Linux
8362
- name: linux publish with Gradle
8463
if: ${{ startsWith(github.ref, 'refs/tags/') && contains(matrix.os, 'ubuntu') }}
85-
run: ./gradlew --warning-mode all build publishAllPublicationsToOSSRHRepository
64+
run: ./gradlew --warning-mode all build publishAllPublicationsToMavenCentralRepository
8665
env:
87-
OSSRH_USERNAME: atsushieno
88-
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
89-
OSSRH_STAGING_REPOSITORY_ID: ${{ needs.create_staging_repository.outputs.repository_id }}
90-
SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }}
91-
SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
92-
SIGNING_SECRET_KEY_RING_FILE: ${{ format('{0}/{1}', github.workspace, secrets.SIGNING_SECRET_KEY_RING_FILE) }}
66+
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
67+
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
68+
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_PASSWORD }}
69+
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.GPG_KEY_CONTENTS }}
9370
# only for releases on Linux
9471
- name: linux publish with Gradle
9572
if: ${{ startsWith(github.ref, 'refs/tags/') && contains(matrix.os, 'ubuntu') }}

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ plugins {
99
alias(libs.plugins.npmPublish) apply false
1010
alias(libs.plugins.antlrKotlinPlugin) apply false
1111
alias(libs.plugins.binaryCompatibilityValidatorPlugin) apply false
12+
alias(libs.plugins.vanniktech.maven.publish) apply false
1213
}
1314

1415
allprojects {

gradle/libs.versions.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ startup-runtime = "1.2.0"
2727
ktmidi = "0.11.0"
2828
mugene = "0.7.0"
2929

30+
vanniktech-maven-publish = "0.31.0"
31+
3032
[libraries]
3133
ktmidi = { module = "dev.atsushieno:ktmidi", version.ref = "ktmidi" }
3234
junit = { group = "junit", name = "junit", version.ref = "junit" }
@@ -45,6 +47,7 @@ gradleJavacppPlatform = { id = "org.bytedeco.gradle-javacpp-platform", version.r
4547
npmPublish = { id = "org.danilopianini.npm.publish", version.ref = "npm-publish" }
4648
antlrKotlinPlugin = { id = "com.strumenta.antlr-kotlin", version.ref = "antlr-kotlin" }
4749
binaryCompatibilityValidatorPlugin = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "binary-compatibility-validator" }
50+
vanniktech-maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "vanniktech-maven-publish" }
4851

4952
[bundles]
5053

mugene/build.gradle.kts

Lines changed: 26 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@ plugins {
1717
alias(libs.plugins.npmPublish)
1818
alias(libs.plugins.dokka)
1919
alias(libs.plugins.antlrKotlinPlugin)
20-
id("maven-publish")
21-
id("signing")
20+
alias(libs.plugins.vanniktech.maven.publish)
2221
}
2322

2423
group = "dev.atsushieno"
@@ -208,60 +207,31 @@ android {
208207
}
209208
}
210209

211-
afterEvaluate {
212-
publishing {
213-
publications.withType<MavenPublication> {
214-
// https://github.com/gradle/gradle/issues/26091#issuecomment-1681343496
215-
val dokkaJar = project.tasks.register("${name}DokkaJar", Jar::class) {
216-
group = JavaBasePlugin.DOCUMENTATION_GROUP
217-
description = "Assembles Kotlin docs with Dokka into a Javadoc jar"
218-
archiveClassifier.set("javadoc")
219-
from(tasks.named("dokkaHtml"))
220-
221-
// Each archive name should be distinct, to avoid implicit dependency issues.
222-
// We use the same format as the sources Jar tasks.
223-
// https://youtrack.jetbrains.com/issue/KT-46466
224-
archiveBaseName.set("${archiveBaseName.get()}-${name}")
225-
}
226-
artifact(dokkaJar)
227-
228-
pom {
229-
name.set("$name")
230-
description.set("mugene-ng MML (Music Macro Language) compiler for MIDI 1.0 and MIDI 2.0")
231-
url.set("https://github.com/atsushieno/mugene-ng")
232-
scm {
233-
url.set("https://github.com/atsushieno/mugene-ng")
234-
}
235-
licenses {
236-
license {
237-
name.set("the MIT License")
238-
url.set("https://github.com/atsushieno/mugene-ng/blob/main/LICENSE")
239-
}
240-
}
241-
developers {
242-
developer {
243-
id.set("atsushieno")
244-
name.set("Atsushi Eno")
245-
email.set("atsushieno@gmail.com")
246-
}
247-
}
248-
}
249-
}
210+
apply(from = "${rootDir}/publish-npm.gradle")
250211

251-
repositories {
252-
maven {
253-
name = "OSSRH"
254-
url = uri("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/")
255-
credentials {
256-
username = System.getenv("OSSRH_USERNAME")
257-
password = System.getenv("OSSRH_PASSWORD")
258-
}
259-
}
260-
}
212+
val gitProjectName = "mugene-ng"
213+
val packageName = project.name
214+
val packageDescription = "mugene-ng MML (Music Macro Language) compiler for MIDI 1.0 and MIDI 2.0"
215+
// my common settings
216+
val packageUrl = "https://github.com/atsushieno/$gitProjectName"
217+
val licenseName = "MIT"
218+
val licenseUrl = "https://github.com/atsushieno/$gitProjectName/blob/main/LICENSE"
219+
val devId = "atsushieno"
220+
val devName = "Atsushi Eno"
221+
val devEmail = "atsushieno@gmail.com"
222+
223+
// Common copy-pasted
224+
mavenPublishing {
225+
publishToMavenCentral(com.vanniktech.maven.publish.SonatypeHost.CENTRAL_PORTAL)
226+
if (project.hasProperty("mavenCentralUsername") || System.getenv("ORG_GRADLE_PROJECT_mavenCentralUsername") != null)
227+
signAllPublications()
228+
coordinates(group.toString(), project.name, version.toString())
229+
pom {
230+
name.set(packageName)
231+
description.set(packageDescription)
232+
url.set(packageUrl)
233+
scm { url.set(packageUrl) }
234+
licenses { license { name.set(licenseName); url.set(licenseUrl) } }
235+
developers { developer { id.set(devId); name.set(devName); email.set(devEmail) } }
261236
}
262-
263-
// keep it as is. It is replaced by CI release builds
264-
signing {}
265237
}
266-
267-
apply(from = "${rootDir}/publish-npm.gradle")

0 commit comments

Comments
 (0)