feat: configure semantic-release version file updates and update README
Agent-Logs-Url: https://github.com/christianlouis/InboxConverge/sessions/7f2a54df-87b2-46b3-af80-0aa5aa616ee7 Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
@@ -24,6 +24,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- **`NotificationConfigCreate` schema test failure**: `NotificationConfigBase.name` was a required field (`...`) but the unit test and the database column both use a default of `"My Notification"`. Changed the Pydantic field to `default="My Notification"` to match the DB default and allow callers to omit the field.
|
- **`NotificationConfigCreate` schema test failure**: `NotificationConfigBase.name` was a required field (`...`) but the unit test and the database column both use a default of `"My Notification"`. Changed the Pydantic field to `default="My Notification"` to match the DB default and allow callers to omit the field.
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
- **Automatic release numbers** (`pyproject.toml`): Added `version_toml = ["pyproject.toml:project.version"]` to `[tool.semantic_release]` so that `python-semantic-release` now writes the computed version back into the `project.version` field of `pyproject.toml` on every release. The field is initialised to `0.0.0` and will be bumped automatically from that point forward.
|
||||||
|
- **Release badge** (`README.md`): Added a dynamic "GitHub Release" shield that always shows the latest published release tag.
|
||||||
|
- **Releases section** (`README.md`): Added a "Releases" section explaining the Semantic Versioning / Conventional Commits workflow and the version-bump rules.
|
||||||
- **Semantic Release** (`release.yml`): Automated versioning and GitHub Release creation on every push to `main` using `python-semantic-release`. Reads conventional-commit prefixes (`feat:`, `fix:`, etc.) to determine the next version and updates `CHANGELOG.md`.
|
- **Semantic Release** (`release.yml`): Automated versioning and GitHub Release creation on every push to `main` using `python-semantic-release`. Reads conventional-commit prefixes (`feat:`, `fix:`, etc.) to determine the next version and updates `CHANGELOG.md`.
|
||||||
- **`pyproject.toml`**: Project metadata and `[tool.semantic_release]` configuration for `python-semantic-release`.
|
- **`pyproject.toml`**: Project metadata and `[tool.semantic_release]` configuration for `python-semantic-release`.
|
||||||
- **GitOps auto-deployment** (step in `ci.yml`): After a successful Docker build on `main`, a new `update-k8s-manifest` job checks out `christianlouis/k8s-cluster-state` (using the `GH_PAT` secret) and updates the backend and frontend image tags in `apps/gmail-puller/preprod/gmail-puller-stack.yaml` to the new `main-<sha>` image, then commits and pushes.
|
- **GitOps auto-deployment** (step in `ci.yml`): After a successful Docker build on `main`, a new `update-k8s-manifest` job checks out `christianlouis/k8s-cluster-state` (using the `GH_PAT` secret) and updates the backend and frontend image tags in `apps/gmail-puller/preprod/gmail-puller-stack.yaml` to the new `main-<sha>` image, then commits and pushes.
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
[](https://github.com/christianlouis/inboxconverge/actions/workflows/lint.yml)
|
[](https://github.com/christianlouis/inboxconverge/actions/workflows/lint.yml)
|
||||||
[](https://github.com/christianlouis/inboxconverge/actions/workflows/security.yml)
|
[](https://github.com/christianlouis/inboxconverge/actions/workflows/security.yml)
|
||||||
[](https://github.com/christianlouis/inboxconverge/actions/workflows/docker-build.yml)
|
[](https://github.com/christianlouis/inboxconverge/actions/workflows/docker-build.yml)
|
||||||
|
[](https://github.com/christianlouis/InboxConverge/releases/latest)
|
||||||
[](https://opensource.org/licenses/MIT)
|
[](https://opensource.org/licenses/MIT)
|
||||||
[](https://www.python.org/downloads/)
|
[](https://www.python.org/downloads/)
|
||||||
[](https://www.docker.com/)
|
[](https://www.docker.com/)
|
||||||
@@ -239,6 +240,28 @@ Detailed documentation lives in the [`docs/`](docs/) directory:
|
|||||||
| [Coding Patterns](docs/CODING_PATTERNS.md) | Code style and conventions |
|
| [Coding Patterns](docs/CODING_PATTERNS.md) | Code style and conventions |
|
||||||
| [SaaS README](docs/README_SAAS.md) | Multi-tenant SaaS platform details |
|
| [SaaS README](docs/README_SAAS.md) | Multi-tenant SaaS platform details |
|
||||||
|
|
||||||
|
## Releases
|
||||||
|
|
||||||
|
This project uses [Semantic Versioning](https://semver.org/) and
|
||||||
|
[Conventional Commits](https://www.conventionalcommits.org/) to automate
|
||||||
|
release numbering. Every push to `main` triggers the
|
||||||
|
[Semantic Release workflow](.github/workflows/release.yml), which:
|
||||||
|
|
||||||
|
1. Inspects commit messages since the last release.
|
||||||
|
2. Determines the next version number (`patch`, `minor`, or `major`) based on
|
||||||
|
the commit prefixes (`fix:`, `feat:`, `feat!:` / `BREAKING CHANGE`).
|
||||||
|
3. Creates a git tag (`vX.Y.Z`), updates the `version` field in
|
||||||
|
`pyproject.toml`, generates a GitHub Release with release notes, and
|
||||||
|
updates `CHANGELOG.md` — all automatically.
|
||||||
|
|
||||||
|
| Commit prefix | Version bump |
|
||||||
|
|---------------|-------------|
|
||||||
|
| `fix:`, `perf:` | Patch (`0.0.x`) |
|
||||||
|
| `feat:` | Minor (`0.x.0`) |
|
||||||
|
| `feat!:` / `BREAKING CHANGE` | Major (`x.0.0`) |
|
||||||
|
|
||||||
|
Browse all releases on the [Releases page](https://github.com/christianlouis/InboxConverge/releases).
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Contributions are welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on:
|
Contributions are welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on:
|
||||||
|
|||||||
+2
-1
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "inboxconverge"
|
name = "inboxconverge"
|
||||||
dynamic = ["version"]
|
version = "0.0.0"
|
||||||
description = "Multi-account email forwarding and processing service"
|
description = "Multi-account email forwarding and processing service"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.12"
|
requires-python = ">=3.12"
|
||||||
@@ -20,6 +20,7 @@ Issues = "https://github.com/christianlouis/InboxConverge/issues"
|
|||||||
Changelog = "https://github.com/christianlouis/InboxConverge/blob/main/CHANGELOG.md"
|
Changelog = "https://github.com/christianlouis/InboxConverge/blob/main/CHANGELOG.md"
|
||||||
|
|
||||||
[tool.semantic_release]
|
[tool.semantic_release]
|
||||||
|
version_toml = ["pyproject.toml:project.version"]
|
||||||
version_source = "tag"
|
version_source = "tag"
|
||||||
commit_version_number = true
|
commit_version_number = true
|
||||||
tag_format = "v{version}"
|
tag_format = "v{version}"
|
||||||
|
|||||||
Reference in New Issue
Block a user