Skip to content

ci: release automation workflow (dispatch + dry-run) - #19

Open
Tagar wants to merge 1 commit into
masterfrom
release-automation
Open

ci: release automation workflow (dispatch + dry-run)#19
Tagar wants to merge 1 commit into
masterfrom
release-automation

Conversation

@Tagar

@Tagar Tagar commented Aug 28, 2026

Copy link
Copy Markdown
Member

Release automation (release.yml)

Codifies the manual py4j-python/release_process.md into a single manual-dispatch
GitHub Action. byteoak testing PR — validates that the build path
(./gradlew buildPython, twine check, mvn package) runs green in CI before
proposing this upstream.

Design

  • workflow_dispatch with a dry_run input (default true).
  • build job — always runs, publishes nothing. JDK 8 (zulu) + Python, runs
    ./gradlew clean buildPython (sdist + wheel, which bundle the Java jar and
    docs), twine check, mvn package, and uploads the distributions as workflow
    artifacts. This is the part we exercise on byteoak.
  • publish-pypi job — only on dry_run=false. Uses PyPI Trusted
    Publishing (OIDC)
    — no stored token.
  • publish-maven job — only on dry_run=false. mvn deploy + GPG signing
    to Sonatype.

Owner setup needed before a real (dry_run=false) run

  • PyPI: configure a Trusted Publisher for this repo + pypi environment.
  • Maven Central: secrets OSSRH_USERNAME, OSSRH_TOKEN,
    MAVEN_GPG_PRIVATE_KEY, MAVEN_GPG_PASSPHRASE.

Known caveat (documented in the workflow header)

The current pom.xml deploys via nexus-staging to oss.sonatype.org (legacy
OSSRH). Sonatype is retiring OSSRH for the Central Publisher Portal; the Maven
deploy may need the central-publishing-maven-plugin. The dry_run path does
not touch Sonatype, so this is safe to iterate on. The Eclipse update-site step
(release_process_for_eclipse.md) is intentionally left manual.

Scope

Independent of the version-bump PR (#18) — this only adds a workflow file.

Codifies py4j-python/release_process.md as a manual-dispatch GitHub Action.

- build job (always runs, never publishes): JDK 8 zulu + Python, runs
  ./gradlew clean buildPython (sdist+wheel, bundling jar + docs), twine
  check, mvn package, uploads dist as artifacts. Fully exercisable on a fork.
- publish-pypi (dry_run=false only): PyPI Trusted Publishing (OIDC), no token.
- publish-maven (dry_run=false only): mvn deploy + GPG to Sonatype.

dry_run defaults to true so the workflow is safe to rehearse. Header documents
the required repo config and flags the OSSRH -> Central Portal sunset caveat
for the Maven side. Eclipse update-site step is left manual by design.

Co-authored-by: Isaac <no-reply@databricks.com>
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.

1 participant