Skip to content

Commit cfa7dc8

Browse files
ci: manually publish to maven central
and drop github package registry publication
1 parent a5f6006 commit cfa7dc8

File tree

7 files changed

+81
-128
lines changed

7 files changed

+81
-128
lines changed

.editorconfig

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ max_line_length = 120
1212
[LICENSE]
1313
max_line_length = off
1414

15+
[README.md]
16+
indent_size = 2
17+
max_line_length = off
18+
1519
[.editorconfig]
1620
max_line_length = off
1721

.github/workflows/publish.yml

Lines changed: 52 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -8,46 +8,42 @@ concurrency:
88
cancel-in-progress: true
99
group: ${{github.workflow}}-${{github.ref_name}}
1010

11-
permissions:
12-
packages: write
13-
contents: read
14-
1511
jobs:
16-
gpr:
12+
build:
1713
runs-on: ${{matrix.os}}
18-
name: Publish ${{matrix.platform}} packages on GPR
14+
name: Build ${{matrix.platform}} packages
1915
strategy:
2016
fail-fast: false
2117
matrix:
2218
include:
2319
- os: ubuntu-latest
2420
platform: common
2521
targets: >-
26-
:kbigint:publishKotlinMultiplatformPublicationToGitHubRepository
27-
:kbigint-serialization:publishKotlinMultiplatformPublicationToGitHubRepository
22+
:kbigint:publishKotlinMultiplatformPublicationToLocalRepository
23+
:kbigint-serialization:publishKotlinMultiplatformPublicationToLocalRepository
2824
- os: ubuntu-latest
2925
platform: JVM
30-
targets: :kbigint:publishJvmPublicationToGitHubRepository
26+
targets: :kbigint:publishJvmPublicationToLocalRepository
3127
- os: ubuntu-latest
3228
platform: Android
33-
targets: :kbigint:publishAndroidReleasePublicationToGitHubRepository
29+
targets: :kbigint:publishAndroidReleasePublicationToLocalRepository
3430
- os: ubuntu-latest
3531
platform: JS
36-
target: :kbigint:publishJsPublicationToGitHubRepository
32+
targets: :kbigint:publishJsPublicationToLocalRepository
3733
- os: ubuntu-latest
3834
platform: Linux
3935
targets: >-
40-
:kbigint:publishLinuxX64PublicationToGitHubRepository
41-
:kbigint:publishLinuxArm64PublicationToGitHubRepository
36+
:kbigint:publishLinuxX64PublicationToLocalRepository
37+
:kbigint:publishLinuxArm64PublicationToLocalRepository
4238
- os: windows-latest
4339
platform: Windows
44-
targets: :kbigint:publishMingwX64PublicationToGitHubRepository
40+
targets: :kbigint:publishMingwX64PublicationToLocalRepository
4541
- os: macos-14
4642
platform: macOS/iOS
4743
targets: >-
48-
:kbigint:publishMacosX64PublicationToGitHubRepository
49-
:kbigint:publishMacosArm64PublicationToGitHubRepository
50-
:kbigint:publishIosArm64PublicationToGitHubRepository
44+
:kbigint:publishMacosX64PublicationToLocalRepository
45+
:kbigint:publishMacosArm64PublicationToLocalRepository
46+
:kbigint:publishIosArm64PublicationToLocalRepository
5147
steps:
5248
- name: Checkout repository
5349
uses: actions/checkout@v4
@@ -83,91 +79,51 @@ jobs:
8379
with:
8480
path: ${{runner.tool_cache}}/konan/dependencies
8581
key: konan-${{runner.os}}-dependencies
86-
- name: Publish packages
87-
run: ./gradlew --no-daemon --info ${{matrix.targets}}
82+
- name: Build packages
83+
run: ./gradlew --no-daemon ${{matrix.targets}}
8884
env:
89-
GITHUB_TOKEN: ${{github.token}}
9085
SIGNING_KEY: ${{secrets.SIGNING_KEY}}
9186
SIGNING_PASSWORD: ${{secrets.SIGNING_PASSWORD}}
9287
KONAN_DATA_DIR: ${{runner.tool_cache}}/konan
93-
central:
94-
runs-on: ${{matrix.os}}
95-
name: Publish ${{matrix.platform}} packages on Maven Central
88+
- name: Upload artifacts
89+
uses: actions/upload-artifact@v4
90+
with:
91+
name: kbigint-${{matrix.platform == 'macOS/iOS' && 'macOS-iOS' || matrix.platform}}
92+
path: |
93+
build/repo/**
94+
!build/repo/**/maven-metadata.*
95+
retention-days: 2
96+
publish:
97+
runs-on: ubuntu-latest
98+
name: Publish packages on Maven Central
99+
needs: [build]
96100
environment:
97101
name: sonatype
98-
url: https://central.sonatype.com/artifact/io.github.observeroftime/kbigint
99-
strategy:
100-
fail-fast: false
101-
matrix:
102-
include:
103-
- os: ubuntu-latest
104-
platform: common
105-
targets: >-
106-
:kbigint:publishKotlinMultiplatformPublicationToSonatypeRepository
107-
:kbigint-serialization:publishKotlinMultiplatformPublicationToSonatypeRepository
108-
- os: ubuntu-latest
109-
platform: JVM
110-
targets: :kbigint:publishJvmPublicationToSonatypeRepository
111-
- os: ubuntu-latest
112-
platform: Android
113-
targets: :kbigint:publishAndroidReleasePublicationToSonatypeRepository
114-
- os: ubuntu-latest
115-
platform: JS
116-
target: :kbigint:publishJsPublicationToSonatypeRepository
117-
- os: ubuntu-latest
118-
platform: Linux
119-
targets: >-
120-
:kbigint:publishLinuxX64PublicationToSonatypeRepository
121-
:kbigint:publishLinuxArm64PublicationToSonatypeRepository
122-
- os: windows-latest
123-
platform: Windows
124-
targets: :kbigint:publishMingwX64PublicationToSonatypeRepository
125-
- os: macos-14
126-
platform: macOS/iOS
127-
targets: >-
128-
:kbigint:publishMacosX64PublicationToSonatypeRepository
129-
:kbigint:publishMacosArm64PublicationToSonatypeRepository
130-
:kbigint:publishIosArm64PublicationToSonatypeRepository
102+
url: https://central.sonatype.com/artifact/io.github.observeroftime.kbigint/kbigint
103+
env:
104+
SONATYPE_API: https://central.sonatype.com/api/v1/publisher
105+
SONATYPE_AUTH: "Authorization: Bearer ${{secrets.SONATYPE_TOKEN}}"
131106
steps:
132-
- name: Checkout repository
133-
uses: actions/checkout@v4
107+
- name: Download artifacts
108+
uses: actions/download-artifact@v4
134109
with:
135-
submodules: true
136-
- name: Set up Java
137-
uses: actions/setup-java@v4
138-
with:
139-
distribution: temurin
140-
java-version: 17
141-
cache: gradle
142-
cache-dependency-path: |
143-
gradle/libs.versions.toml
144-
gradle/wrapper/gradle-wrapper.properties
145-
- name: Set up cross compilation
146-
run: sudo apt-get install -qy {binutils,gcc}-aarch64-linux-gnu
147-
if: matrix.platform == 'Linux' || matrix.platform == 'common'
148-
- name: Get the cache versions
149-
id: versions
150-
shell: sh
110+
path: kbigint
111+
pattern: kbigint-*
112+
merge-multiple: true
113+
- name: Upload bundle
151114
run: |-
152-
{
153-
sed -n 's/kotlin-stdlib = "\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)"/kotlin=\1.\2.\3/p' gradle/libs.versions.toml
154-
} >> "$GITHUB_OUTPUT"
155-
- name: Restore Kotlin/Native prebuilt
156-
uses: actions/cache/restore@v4
157-
with:
158-
path: ${{runner.tool_cache}}/konan/kotlin-native-prebuilt-*
159-
key: konan-${{runner.os}}-prebuilt-${{steps.versions.outputs.kotlin}}
160-
- name: Restore Kotlin/Native dependencies
161-
uses: actions/cache/restore@v4
162-
if: matrix.platform != 'JVM' && matrix.platform != 'Android' && matrix.platform != 'JS'
163-
with:
164-
path: ${{runner.tool_cache}}/konan/dependencies
165-
key: konan-${{runner.os}}-dependencies
166-
- name: Publish packages
167-
run: ./gradlew --no-daemon --info ${{matrix.targets}}
168-
env:
169-
SIGNING_KEY: ${{secrets.SIGNING_KEY}}
170-
SIGNING_PASSWORD: ${{secrets.SIGNING_PASSWORD}}
171-
SONATYPE_USERNAME: ${{secrets.SONATYPE_USERNAME}}
172-
SONATYPE_PASSWORD: ${{secrets.SONATYPE_PASSWORD}}
173-
KONAN_DATA_DIR: ${{runner.tool_cache}}/konan
115+
url="$SONATYPE_API/upload?publishingType=USER_MANAGED"
116+
(cd kbigint && zip -qr ../kbigint.zip *)
117+
printf >> "$GITHUB_ENV" 'DEPLOYMENT_ID=%s\n' $(curl -Ssf -Fbundle=@kbigint.zip -H "$SONATYPE_AUTH" "$url")
118+
- name: Verify status
119+
run: |-
120+
url="$SONATYPE_API/status?id=$DEPLOYMENT_ID"
121+
while [[ ${state:=PENDING} == PENDING ]] || [[ $state == VALIDATING ]]; do
122+
state=$(curl -Ssf -XPOST -H "$SONATYPE_AUTH" "$url" | jq -r .deploymentState)
123+
done
124+
if [[ $state == FAILED ]]; then
125+
printf '::error title=Publication failed::Check https://central.sonatype.com/publishing/deployments\n'
126+
exit 1
127+
fi
128+
- name: Publish deployment
129+
run: curl -fi -XPOST -H "$SONATYPE_AUTH" "$SONATYPE_API/deployment/$DEPLOYMENT_ID"

README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@
22

33
Kotlin Multiplatform BigInteger library.
44

5+
<div style="margin-top:16px">
6+
<a href="https://github.com/ObserverOfTime/kbigint/actions/workflows/ci.yml" style="border-bottom:unset">
7+
<img alt="CI" src="https://img.shields.io/github/actions/workflow/status/ObserverOfTime/kbigint/ci.yml?logo=github&label=CI"/>
8+
</a>
9+
<a href="https://observeroftime.github.io/kbigint/" style="border-bottom:unset">
10+
<img alt="Pages" src="https://img.shields.io/github/deployments/ObserverOfTime/kbigint/github-pages?logo=kotlin&label=Documentation"/>
11+
</a>
12+
<a href="https://central.sonatype.com/artifact/io.github.observeroftime.kbigint/kbigint" style="border-bottom:unset">
13+
<img alt="Central" src="https://img.shields.io/maven-central/v/io.github.observeroftime.kbigint/kbigint?logo=sonatype&label=Maven%20Central"/>
14+
</a>
15+
</div>
16+
517
## Platforms
618

719
| Platform | Implementation |

kbigint-serialization/README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ The serialization module of the KBigInt library.
44

55
## Add the dependency
66

7-
Add these to `build.gradle.kts`:
8-
97
```kotlin
108
dependencies {
119
implementation("io.github.observeroftime.kbigint:kbigint-serialization")

kbigint-serialization/build.gradle.kts

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ kotlin {
1717
jvm()
1818

1919
androidTarget {
20+
withSourcesJar(true)
2021
publishLibraryVariants("release")
2122
}
2223

@@ -130,15 +131,13 @@ tasks.dokkaHtmlPartial {
130131

131132
tasks.create<Jar>("javadocJar") {
132133
group = "documentation"
133-
dependsOn(tasks.dokkaHtml)
134134
archiveClassifier.set("javadoc")
135-
from(tasks.dokkaHtml.get().outputDirectory)
135+
from(files("README.md"))
136136
}
137137

138138
publishing {
139139
publications.withType(MavenPublication::class) {
140-
if (System.getenv("SONATYPE_USERNAME") != null)
141-
artifact(tasks["javadocJar"])
140+
artifact(tasks["javadocJar"])
142141
pom {
143142
name.set("KBigInt Serialization")
144143
description.set("The serialization module of the KBigInt library")
@@ -180,18 +179,9 @@ publishing {
180179
}
181180
}
182181

183-
maven {
184-
name = "Sonatype"
185-
url = uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/")
186-
credentials {
187-
username = System.getenv("SONATYPE_USERNAME")
188-
password = System.getenv("SONATYPE_PASSWORD")
189-
}
190-
}
191-
192182
maven {
193183
name = "local"
194-
url = uri(rootProject.layout.buildDirectory.dir("repos"))
184+
url = uri(rootProject.layout.buildDirectory.dir("repo"))
195185
}
196186
}
197187
}

kbigint/README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ Kotlin Multiplatform BigInteger library.
44

55
## Add the dependency
66

7-
Add these to `build.gradle.kts`:
8-
97
```kotlin
108
dependencies {
119
implementation("io.github.observeroftime.kbigint:kbigint")

kbigint/build.gradle.kts

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ kotlin {
1919
jvm()
2020

2121
androidTarget {
22+
withSourcesJar(true)
2223
publishLibraryVariants("release")
2324
}
2425

@@ -311,17 +312,20 @@ tasks.dokkaHtmlPartial {
311312
}
312313
}
313314

315+
tasks.withType<AbstractPublishToMaven>().configureEach {
316+
mustRunAfter(tasks.withType<Sign>())
317+
}
318+
314319
tasks.create<Jar>("javadocJar") {
315320
group = "documentation"
316-
dependsOn(tasks.dokkaHtml)
321+
group = "documentation"
317322
archiveClassifier.set("javadoc")
318-
from(tasks.dokkaHtml.get().outputDirectory)
323+
from(files("README.md"))
319324
}
320325

321326
publishing {
322327
publications.withType(MavenPublication::class) {
323-
if (System.getenv("SONATYPE_USERNAME") != null)
324-
artifact(tasks["javadocJar"])
328+
artifact(tasks["javadocJar"])
325329
pom {
326330
name.set("KBigInt")
327331
description.set("Kotlin Multiplatform BigInteger library")
@@ -363,18 +367,9 @@ publishing {
363367
}
364368
}
365369

366-
maven {
367-
name = "Sonatype"
368-
url = uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/")
369-
credentials {
370-
username = System.getenv("SONATYPE_USERNAME")
371-
password = System.getenv("SONATYPE_PASSWORD")
372-
}
373-
}
374-
375370
maven {
376371
name = "local"
377-
url = uri(rootProject.layout.buildDirectory.dir("repos"))
372+
url = uri(rootProject.layout.buildDirectory.dir("repo"))
378373
}
379374
}
380375
}

0 commit comments

Comments
 (0)