Release process
Releases are tag-driven, following the same approach as asciidoc-kmp: pushing a git tag triggers a GitHub Actions workflow that builds and publishes every module to Maven Central. There is no manual upload step.
Before tagging
-
Ensure
VERSION_NAMEin the rootgradle.propertiesis the release version (e.g.0.2.0, no-SNAPSHOT). The modulebuild.gradle.ktsfiles also carry aversion— keep them in agreement withVERSION_NAME. -
Verify the build is green:
./gradlew build -
Commit the version change.
Tag and push
git tag v0.2.0
git push origin v0.2.0
Pushing the tag triggers the release workflow (.github/workflows/publish.yml). It runs on a macOS runner (required so the Apple targets — iOS, macOS — can be built and published alongside JVM, Android, and Linux), and:
-
checks out the tagged commit and sets up JDK 22
-
validates that
signAllPublications=trueis set ingradle.properties— the run fails fast if signing is not enabled -
runs
./gradlew publish, publishing all modules to Maven Central with in-memory GPG signing
Credentials come from repository secrets: MAVEN_CENTRAL_USERNAME and MAVEN_CENTRAL_PASSWORD for the Sonatype account, GPG_PRIVATE_KEY and SIGNING_PASSWORD for signing. No keys or passwords live in the repository.
Artifacts appear under org.markup-poet on Maven Central once Sonatype processing completes.