Skip to content

build(release): prepare synchronized PyPI publishing - #113

Merged
wlgys8 merged 1 commit into
Motphys:mainfrom
mxj711:ci/pypi-release-pipeline
Oct 12, 2026
Merged

wlgys8 merged 1 commit into
Motphys:mainfrom
mxj711:ci/pypi-release-pipeline

Conversation

@mxj711

@mxj711 mxj711 commented Oct 10, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Publish motrix-env-core, motrix-deploy, and motrix-rl to PyPI/TestPyPI.
  • Extend Python support to >=3.10,<3.14.
  • Add package metadata, LICENSE files, project URLs, classifiers, and py.typed.
  • Remove the unnecessary python-abc dependency.
  • Add Commitizen-driven synchronized workspace version bumps and internal dependency pinning.
  • Add release, hotfix, tag, GitHub Release, and PyPI publishing workflows.
  • Keep Docker image publishing manual and dispatch it from stable.
  • Add workspace version and dependency consistency tests.

Closes #108

@mxj711
mxj711 force-pushed the ci/pypi-release-pipeline branch 4 times, most recently from 12609e6 to 18a2121 Compare October 10, 2026 09:36
@mxj711
mxj711 requested a review from wlgys8 October 12, 2026 03:12
@mxj711
mxj711 force-pushed the ci/pypi-release-pipeline branch 2 times, most recently from f0b3d67 to 5a9679f Compare October 12, 2026 04:44
Prepare public metadata for motrix-env-core, motrix-deploy, and motrix-rl.

Pin cross-workspace dependencies to the shared workspace version and enforce the contract in tests.

Use Commitizen, reviewed release pull requests, and Trusted Publishing to automate package releases.

Refs Motphys#108
@mxj711
mxj711 force-pushed the ci/pypi-release-pipeline branch from 5a9679f to 4720699 Compare October 12, 2026 05:10
@wlgys8
wlgys8 requested a balanced review from Copilot October 12, 2026 05:23

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

It introduces release automation involving publishing credentials (OIDC Trusted Publishing), branch/tag protection policy, and version governance that cannot be fully validated without live CI/registry execution and warrants final human review.

0 open findings

What changed in this PR

This PR prepares the MotrixLab workspace for synchronized public distribution on PyPI/TestPyPI (closes #108). It makes motrix-env-core, motrix-deploy, and motrix-rl publishable with complete package metadata, widens their supported Python range to >=3.10,<3.14, pins every cross-workspace dependency to the shared workspace version, and adds Commitizen-driven version bumping plus a full set of release/publishing GitHub workflows with human review gates. It also drops the unused python-abc dependency and refactors Docker publishing to manual dispatch from stable.

Changes:

  • Packaging: add LICENSE, py.typed, license-files, keywords, classifiers, and project URLs to the three published packages; widen requires-python to >=3.10,<3.14; remove python-abc.
  • Version policy: pin all internal motrix-* deps to ==0.4.0b0, add [tool.commitizen] synchronized bumping, and add workspace version/dependency-pin contract tests plus a release-version validation script.
  • Release automation: new release.yml, pypi-publish.yml (OIDC Trusted Publishing in dependency order), Docker switched to manual dispatch, pinned action SHAs, and extensive release documentation.
File Description
pyproject.toml Widen root requires-python, pin internal deps, add commitizen dev dep and [tool.commitizen] config
motrix_{env_core,deploy,rl}/​pyproject.toml Publishable metadata: license-files, keywords, classifiers, URLs, widened Python range, pinned internal deps
motrix_{env_core,deploy,rl}/​LICENSE, .../​py.typed Add per-package Apache-2.0 license and typing markers for distribution
motrix_{robots,envs,env_motrixsim,env_mujoco,rl_builtin,rl_skrl,rl_rslrl,deploy_*}/​pyproject.toml Pin cross-workspace deps to ==0.4.0b0
uv.lock Add commitizen + transitive deps, remove python-abc, bump packaging
.github/​scripts/​validate_release_version.py PEP 440 release-target validation (normal vs stable-patch)
tests/​test_workspace_versions.py, tests/​test_release_version_validation.py Contract tests for shared version, pins, lockfile, and version selection
.github/​workflows/​release.yml, pypi-publish.yml New release and OIDC publishing pipelines
.github/​workflows/​docker-build.yml Switch to manual dispatch; add major.minor tag extraction
.github/​workflows/​{tests,pr-checks,codeql,branch-policy}.yml Pin action SHAs; stable-patch wording
.github/​workflows/​{RELEASE,README}.md, .github/​{REPOSITORY_SETTINGS,PULL_REQUEST_TEMPLATE}.md Document release/publishing process and required checks

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@wlgys8
wlgys8 merged commit ab2b7a5 into Motphys:main Oct 12, 2026
6 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.

Implement package metadata, synchronized versioning, and release workflows

3 participants