Automate releases from PR titles and clean up CI workflows.
Add release and PR title checks, shared CI scripts, Gitea PR template, and align pyproject.toml to v0.3.1. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
co-authored by
Cursor
parent
2bb361e3a3
commit
a8491c005c
@@ -112,3 +112,38 @@ uv run pre-commit run --all-files
|
||||
```
|
||||
|
||||
Integration tests require Docker (testcontainers).
|
||||
|
||||
## Releases
|
||||
|
||||
Releases are automated when a pull request is merged to `main`. CI reads the **merged PR title** to decide whether and how to bump the version.
|
||||
|
||||
### How it works
|
||||
|
||||
1. Open a PR targeting `main` (see [`.gitea/PULL_REQUEST_TEMPLATE.md`](.gitea/PULL_REQUEST_TEMPLATE.md)).
|
||||
2. If the PR changes files under `python_repositories/`, the title **must** start with a version bump prefix (enforced by CI).
|
||||
3. On merge, [`release.yml`](.gitea/workflows/release.yml) bumps [`pyproject.toml`](pyproject.toml), commits, tags `vX.Y.Z`, creates a Gitea release with auto-generated notes, and pushes the tag.
|
||||
4. [`publish.yml`](.gitea/workflows/publish.yml) builds and publishes the package to the Gitea Package Registry.
|
||||
|
||||
Docs-, CI-, and test-only PRs do not need a prefix and will not trigger a release.
|
||||
|
||||
### PR title prefixes
|
||||
|
||||
| Prefix | Bump | Example |
|
||||
| ------------------------- | ---------- | --------------------- |
|
||||
| `[patch]` or `[fix]` | patch | `0.3.1` → `0.3.2` |
|
||||
| `[minor]` or `[feat]` | minor | `0.3.1` → `0.4.0` |
|
||||
| `[major]` or `[breaking]` | major | `0.3.1` → `1.0.0` |
|
||||
| _(none)_ | no release | docs / CI / deps only |
|
||||
|
||||
Example titles:
|
||||
|
||||
- `[minor] Add public repository interfaces and subclassable adapter CRUD API`
|
||||
- `[patch] Fix mypy context manager typing for adapter subclasses`
|
||||
|
||||
### Release notes
|
||||
|
||||
Release notes are generated from commits since the previous tag (see [`scripts/ci/generate-release-notes.sh`](scripts/ci/generate-release-notes.sh)).
|
||||
|
||||
### Manual release
|
||||
|
||||
You can still push a `v*.*.*` tag manually; `publish.yml` will build and publish. The current baseline version is **0.3.1**.
|
||||
|
||||
Reference in New Issue
Block a user