feat: Maven Central publishing pipeline#16
Merged
Merged
Conversation
|
The author of this PR, MarketDataDev03, is not an activated member of this organization on Codecov. |
MarketDataDev01
approved these changes
Jun 29, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
feat: Maven Central publishing pipeline
Wires the SDK for publication to Maven Central via the Sonatype Central Portal, plus a dedicated, manually-triggered GitHub Actions workflow to run the release. The publishing path was validated end-to-end with a manual
validate-and-dropdeployment before this PR (the bundle passed signing, POM, and namespace validation on the Portal).What's included
app.marketdata. Switched the Maven coordinate from the unverifiedcom.marketdatatoapp.marketdata, the namespace verified under the Central Portal account (domainmarketdata.app, reversed). The Java package (com.marketdata.sdk) and the artifactId (marketdata-sdk-java) are unchanged — only the published coordinate moves. README and the consumer-test example are updated to match.build.gradle.kts):publishToMavenCentral(SonatypeHost.CENTRAL_PORTAL, automaticRelease = false)— targets the Portal explicitly (the no-arg default routes to legacy OSSRH, which rejects Portal accounts) and stops atVALIDATEDfor manual review/release rather than auto-publishing.signAllPublications()— GPG signing, required by Central. Credentials read from Gradle properties / env vars; never hard-coded.url,licenses,developers,scm,inceptionYear) — the fields Central rejects if missing, previouslyTODOplaceholders.-PsdkVersion=…(default stays0.1.0-SNAPSHOT) so a release version is supplied at publish time without committing it..github/workflows/publish.yml): standalone, manualworkflow_dispatchwith two inputs —versionand areleasetoggle. Off uploads to the Portal and stops atVALIDATEDfor manual review; on runspublishAndReleaseToMavenCentral. Builds and tests on JDK 17 before publishing, and runs under themaven-centralGitHub Environment for optional approval gating.Required repository secrets
The workflow expects four Actions secrets:
MAVEN_CENTRAL_USERNAMEMAVEN_CENTRAL_PASSWORDSIGNING_KEYgpg --armor --export-secret-keys KEYID)SIGNING_KEY_PASSWORDHow to release
GitHub → Actions → "Publish to Maven Central" → Run workflow:
version: e.g.0.1.0release: off to upload and stop atVALIDATED(review and drop in the Portal), on to publish and release.workflow_dispatchonly appears in the Actions UI oncepublish.ymlis on the default branch, so the manual trigger becomes available after this PR merges tomain.Notes
mavenLocalmust re-runmake publishto repopulate under the newapp.marketdatacoordinate.