Add versioning strategy and CI/CD pipeline
- Add semantic versioning section to development plan - Map sprint milestones to version tags - Create Gitea Actions CI workflow (lint, typecheck, test, release) - Add CHANGELOG.md following Keep a Changelog format
This commit is contained in:
@@ -555,17 +555,98 @@ dashboard/app.py → hal/factory.py (Sprint 17, upgraded)
|
||||
|
||||
---
|
||||
|
||||
## Versioning Strategy
|
||||
|
||||
### Semantic Versioning
|
||||
|
||||
This project follows [Semantic Versioning 2.0.0](https://semver.org/):
|
||||
|
||||
```
|
||||
MAJOR.MINOR.PATCH[-PRERELEASE]
|
||||
|
||||
- MAJOR: Breaking API changes
|
||||
- MINOR: New features, backwards compatible
|
||||
- PATCH: Bug fixes, backwards compatible
|
||||
- PRERELEASE: alpha.N, beta.N, rc.N
|
||||
```
|
||||
|
||||
### Phase 1 Version Progression
|
||||
|
||||
| Sprint | Version Tag | Milestone | Release Type |
|
||||
|--------|-------------|-----------|--------------|
|
||||
| 1 | `v0.0.1` | Project scaffolding | Internal |
|
||||
| 3 | `v0.1.0-alpha.1` | Physics engine working | Pre-release |
|
||||
| 4 | `v0.1.0-alpha.2` | Visual demo (dashboard) | Pre-release |
|
||||
| 8 | `v0.1.0-alpha.3` | Network ready (TCP server) | Pre-release |
|
||||
| 11 | `v0.1.0-beta.1` | HAL complete | Pre-release |
|
||||
| 15 | `v0.1.0-beta.2` | First DVT test runs | Pre-release |
|
||||
| 17 | `v0.1.0` | **MVP Complete** | Release |
|
||||
|
||||
### Tagging Convention
|
||||
|
||||
```bash
|
||||
# After completing a milestone sprint:
|
||||
git tag -a v0.1.0-alpha.1 -m "Physics engine working"
|
||||
git push origin v0.1.0-alpha.1
|
||||
```
|
||||
|
||||
### Version Location
|
||||
|
||||
The version is defined in **one place** and read elsewhere:
|
||||
|
||||
```
|
||||
src/py_dvt_ate/__init__.py:
|
||||
__version__ = "0.1.0-alpha.1"
|
||||
|
||||
pyproject.toml:
|
||||
[project]
|
||||
dynamic = ["version"]
|
||||
|
||||
[tool.hatch.version]
|
||||
path = "src/py_dvt_ate/__init__.py"
|
||||
```
|
||||
|
||||
### CI/CD Pipeline
|
||||
|
||||
On every push:
|
||||
- Run `ruff check` (linting)
|
||||
- Run `mypy` (type checking)
|
||||
- Run `pytest` (tests)
|
||||
|
||||
On tag push (`v*`):
|
||||
- All of the above
|
||||
- Build package
|
||||
- Create release
|
||||
|
||||
### CHANGELOG
|
||||
|
||||
Maintain `CHANGELOG.md` following [Keep a Changelog](https://keepachangelog.com/):
|
||||
|
||||
```markdown
|
||||
## [Unreleased]
|
||||
### Added
|
||||
- ...
|
||||
|
||||
## [0.1.0-alpha.1] - 2025-12-XX
|
||||
### Added
|
||||
- Physics engine with thermal-electrical coupling
|
||||
- LDO DUT model with temperature coefficient
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Milestone Summary
|
||||
|
||||
| Sprint | Milestone | What You Can Demo |
|
||||
|--------|-----------|-------------------|
|
||||
| 3 | Physics Working | Unit tests prove thermal coupling |
|
||||
| 4 | **Visual Demo!** | Interactive Streamlit showing physics |
|
||||
| 7 | Instruments Done | SCPI simulators respond to commands |
|
||||
| 8 | Network Ready | TCP server accepts connections |
|
||||
| 11 | HAL Complete | Abstraction layer swappable |
|
||||
| 15 | First Test | TempCo characterisation runs |
|
||||
| 17 | **MVP Complete** | Full end-to-end workflow |
|
||||
| Sprint | Version | Milestone | What You Can Demo |
|
||||
|--------|---------|-----------|-------------------|
|
||||
| 1 | `v0.0.1` | Scaffolding | Package installs |
|
||||
| 3 | `v0.1.0-alpha.1` | Physics Working | Unit tests prove thermal coupling |
|
||||
| 4 | `v0.1.0-alpha.2` | **Visual Demo!** | Interactive Streamlit showing physics |
|
||||
| 7 | - | Instruments Done | SCPI simulators respond to commands |
|
||||
| 8 | `v0.1.0-alpha.3` | Network Ready | TCP server accepts connections |
|
||||
| 11 | `v0.1.0-beta.1` | HAL Complete | Abstraction layer swappable |
|
||||
| 15 | `v0.1.0-beta.2` | First Test | TempCo characterisation runs |
|
||||
| 17 | `v0.1.0` | **MVP Complete** | Full end-to-end workflow |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user