Pre-flight checklist
Before tagging, verify everything is in order:
# 1. Run the full quantum check
uv run plesty check --standard quantum
# 2. Review unreleased commits
git log $(git describe --tags --abbrev=0 2>/dev/null || echo "")..HEAD --oneline
# 3. Confirm CHANGELOG is updated
cat CHANGELOG.md | head -20
# 4. Confirm the current branch is clean
git status
All gates must pass. The CHANGELOG must have an entry for this release. Do not tag until the check passes — CI Gate 14 runs the same check in a clean environment and will reject the build if it fails.
Determine the version bump
| Commits since last tag contain | Bump |
|---|---|
Any feat: or feat!: (no breaking change) |
minor: v0.2.x → v0.3.0 |
Only fix:, chore:, docs:, refactor: |
patch: v0.2.1 → v0.2.2 |
Any feat!: or BREAKING CHANGE: in footer |
major: v0.2.x → v1.0.0 |
Tag and push
git tag v0.3.0
git push origin v0.3.0
Do not push the tag to a branch — push the tag directly. GitLab detects the v* pattern and triggers Gate 14.
What happens in CI after the tag push
- check stage:
plesty check --standard quantumruns in a clean environment - security stage: secret scan
- deploy stage: Sphinx docs build → push to
docs-buildbranch - release stage:
uv build→twine upload(oruv publish) to PyPI withPYPI_TOKEN
The package is live on PyPI within a few minutes of the pipeline completing. It will be installable as:
pip install plesty-power-meter==0.3.0
# or
uv add plesty-power-meter==0.3.0
Monitoring the pipeline
glab ci list -R plesty/hub/devices/thorlab/plesty-pm100d --ref v0.3.0
Or watch on the GitLab web UI under CI/CD → Pipelines.
After the release
- Update
docs/index.mdto reference the new version (if it mentions a version number) - Start the next CHANGELOG section:
## Unreleased
(no changes yet)
- Notify the team if this release has API changes that downstream experiments must accommodate