Once your module passes all quality gates and the CI pipeline is green, you can publish it to PyPI. Publishing is automated through the CI pipeline — you just need to push a version tag.
Prerequisites
Before publishing, ensure:
- All quality gates pass (
uv run plesty check) - The CI pipeline is green on the
expbranch CHANGELOG.mdis updated with the new versionpyproject.tomlhas the correct version number
Version numbering
PLESTY follows semantic versioning:
v<major>.<minor>.<patch>
| Change | Example | When |
|---|---|---|
| Breaking | v1.0.0 → v2.0.0 | API-incompatible changes |
| Feature | v0.2.0 → v0.3.0 | New functionality, backward-compatible |
| Fix | v0.2.3 → v0.2.4 | Bug fixes, backward-compatible |
Publishing workflow
Step 1: Update the version
Update the version in pyproject.toml:
[project]
name = "plesty-my-device"
version = "0.3.0"
Step 2: Update the changelog
Add an entry to CHANGELOG.md:
## [0.3.0] - 2026-07-22
### Added
- New measurement mode for continuous acquisition
- Support for remote calibration
### Fixed
- Timeout handling on slow connections
Step 3: Commit and push
git add pyproject.toml CHANGELOG.md
git commit -m "chore: bump version to 0.3.0"
git push origin feat/bump-version:exp
Step 4: Tag and push the tag
git tag v0.3.0
git push origin v0.3.0
Pushing a v* tag triggers the release stage in the CI pipeline, which builds the package and publishes it to PyPI.
What happens in CI
When a v* tag is pushed:
- Gate 14 triggers the build and release job
- The package is built (sdist + wheel)
- The package is published to PyPI
- A GitLab release is created
Verifying the release
After the pipeline completes:
- Check that the package is on PyPI:
https://pypi.org/project/plesty-my-device/ - Verify the GitLab release is created
- Test installing the package:
uv pip install plesty-my-device
Troubleshooting
| Issue | Likely cause |
|---|---|
| Pipeline fails on release | CI_BOT_TOKEN missing or expired |
| Package not on PyPI | PyPI credentials not configured |
| Tag already exists | Delete local and remote tag, recreate |
Next steps
- Review the CI pipeline configuration
- Explore the quality gates reference