Skip to content

Conversation

@contextablemark
Copy link
Member

feat(kotlin-sdk): add Maven Central publishing with JReleaser
Implements publishing infrastructure for kotlin-core, kotlin-client, and
kotlin-tools to Maven Central using JReleaser and Sonatype's Central Portal API.

Changes:

  • Add JReleaser Gradle plugin (v1.17.0) to library/build.gradle.kts
  • Configure Maven Central deployment via Sonatype Portal API
  • Implement Kotlin Multiplatform workaround for iOS targets (non-JAR artifacts)
  • Create publish.sh script with dry-run support and credential validation
  • Add GitHub Actions workflow for manual publishing with Android SDK 36 setup
  • Update gradle.properties with JReleaser environment variable documentation

Publishing workflow:

  1. Local: ./publish.sh --dry-run (test) or ./publish.sh (publish)
  2. CI/CD: Manual workflow trigger in GitHub Actions

Required credentials (via environment variables):

  • JRELEASER_MAVENCENTRAL_SONATYPE_USERNAME/PASSWORD (Portal user token)
  • JRELEASER_GPG_PASSPHRASE/PUBLIC_KEY/SECRET_KEY (GPG signing)

🤖 Generated with Claude Code

Co-Authored-By: Claude [email protected]

contextablemark and others added 3 commits November 10, 2025 17:24
Implements publishing infrastructure for kotlin-core, kotlin-client, and
kotlin-tools to Maven Central using JReleaser and Sonatype's Central Portal API.

Changes:
- Add JReleaser Gradle plugin (v1.17.0) to library/build.gradle.kts
- Configure Maven Central deployment via Sonatype Portal API
- Implement Kotlin Multiplatform workaround for iOS targets (non-JAR artifacts)
- Create publish.sh script with dry-run support and credential validation
- Add GitHub Actions workflow for manual publishing with Android SDK 36 setup
- Update gradle.properties with JReleaser environment variable documentation

Publishing workflow:
1. Local: ./publish.sh --dry-run (test) or ./publish.sh (publish)
2. CI/CD: Manual workflow trigger in GitHub Actions

Required credentials (via environment variables):
- JRELEASER_MAVENCENTRAL_SONATYPE_USERNAME/PASSWORD (Portal user token)
- JRELEASER_GPG_PASSPHRASE/PUBLIC_KEY/SECRET_KEY (GPG signing)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Move JReleaser artifact override configuration to root project level.
The jreleaser extension is only available at the root where the plugin
is applied, not in subprojects.

Changes:
- Collect iOS target artifact IDs from subprojects
- Configure artifact overrides at root level in afterEvaluate block
- Use proper Property.set() syntax for configuration

Fixes: 'Extension with name jreleaser does not exist' error

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@contextablemark contextablemark merged commit ce85001 into main Nov 11, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants