46 lines
1.7 KiB
Markdown
46 lines
1.7 KiB
Markdown
Create a new Gitea release for this project using semantic versioning.
|
|
|
|
## Current state
|
|
|
|
Fetch tags and find the latest version:
|
|
|
|
```
|
|
!git fetch --tags && git tag --sort=-v:refname | head -5
|
|
```
|
|
|
|
Commits since the last release (if no tags exist, this shows all commits):
|
|
|
|
```
|
|
!git log $(git describe --tags --abbrev=0 2>/dev/null && echo "$(git describe --tags --abbrev=0)..HEAD" || echo "") --oneline
|
|
```
|
|
|
|
## Instructions
|
|
|
|
1. **Determine current version** from the tag output above. If no `vX.Y.Z` tags exist, treat current version as `v0.0.0`.
|
|
|
|
2. **Analyze commits** using conventional commit prefixes to pick the semver bump:
|
|
- Breaking changes (`!` after type, or `BREAKING CHANGE` in body) → **major** bump
|
|
- `feat:` → **minor** bump
|
|
- `fix:`, `chore:`, `deps:`, `revert:`, and everything else → **patch** bump
|
|
- Use the **highest** applicable bump level across all commits
|
|
|
|
3. **Generate release notes** — group commits into sections:
|
|
- **Features** — `feat:` commits
|
|
- **Fixes** — `fix:` commits
|
|
- **Other** — everything else (`chore:`, `deps:`, `revert:`, etc.)
|
|
- Omit empty sections. Each commit is a bullet point with its short description (strip the prefix).
|
|
|
|
4. **Present for approval** — show the user:
|
|
- Current version → proposed new version
|
|
- The full release notes
|
|
- The exact `tea` command that will run
|
|
- Ask the user to confirm before proceeding
|
|
|
|
5. **Create the release** — on user approval, run:
|
|
```
|
|
tea releases create --login gitea --repo ryan/c4 --tag <version> --target main -t "<version>" -n "<release notes>"
|
|
```
|
|
Do NOT create a local git tag — Gitea creates it server-side.
|
|
|
|
6. **Verify** — run `tea releases ls --login gitea --repo ryan/c4` to confirm the release was created.
|