Releasing TALOS¶
Versioning¶
TALOS follows Semantic Versioning (MAJOR.MINOR.PATCH).
When to Bump¶
| Increment | When | Examples |
|---|---|---|
| MAJOR | Breaking changes to MQTT topics, payload schemas, REST API contracts, or database schema requiring migration | Renaming an MQTT topic, changing a payload field type, removing an API endpoint |
| MINOR | New features that are backward-compatible | New MQTT message type, new API endpoint, new dashboard feature, new agent capability |
| PATCH | Bug fixes, documentation updates, dependency updates | Fix Doppler calculation error, update TLE parsing, security patch |
The version is defined in pyproject.toml under [project] version.
Release Process¶
1. Prepare the Release¶
Ensure all tests pass:
2. Update the Changelog¶
Edit docs/CHANGELOG.md:
- Move items from
[Unreleased]to a new version section - Add the release date
- Ensure all notable changes are documented under the correct category (Added, Changed, Deprecated, Removed, Fixed, Security)
3. Update the Version¶
Edit pyproject.toml:
4. Commit the Release¶
5. Create a Git Tag¶
6. Build Docker Images¶
docker build -t talos-core:0.2.0 -f core/Dockerfile .
docker build -t talos-agent:0.2.0 -f agent/Dockerfile .
Tag as latest:
7. Push to Registry¶
docker push registry.gitlab.com/pierros/talos/talos-core:0.2.0
docker push registry.gitlab.com/pierros/talos/talos-core:latest
docker push registry.gitlab.com/pierros/talos/talos-agent:0.2.0
docker push registry.gitlab.com/pierros/talos/talos-agent:latest
Docker Image Tags¶
Each release produces the following Docker images:
| Image | Contents |
|---|---|
talos-core:<version> |
Core API (FastAPI) and Mission Director (both run from the same image with different entry points) |
talos-agent:<version> |
Agent edge client |
Tag Convention¶
| Tag | Meaning |
|---|---|
0.1.0 |
Immutable release tag; always points to the same build |
latest |
Mutable tag; points to the most recent release |
main |
Built from the main branch tip (CI only, not for production) |
Branch Strategy¶
| Branch | Purpose | Protection |
|---|---|---|
main |
Stable releases; always deployable | Protected: requires PR review, passing CI |
feature/* |
New features under development | None; merge to main via PR |
fix/* |
Bug fixes | None; merge to main via PR |
release/* |
Release preparation (optional, for complex releases) | None |
Workflow¶
- Create a feature branch from
main:git checkout -b feature/my-feature - Develop and commit with conventional commit messages (see
CONTRIBUTING.md) - Open a pull request targeting
main - CI runs lint, type check, and tests
- After review and approval, merge to
main - Tag the release on
mainwhen ready
Pre-Release Checklist¶
- [ ] All tests pass (
make lint && make typecheck && make test) - [ ] End-to-end tests pass (
./tests/test_integration/test_e2e_docker.sh) - [ ] Changelog updated with all notable changes
- [ ] Version bumped in
pyproject.toml - [ ] No hardcoded secrets or development-only settings in committed code
- [ ] Docker images build successfully
- [ ] Documentation is up to date (
ARCHITECTURE.md,DEVELOPMENT.md)