Conversation
|
I propose we make it work like this: The release commit/tag creation should be callable via
On tag creation (
Blog post stays a manual optional action following the release. Release commit could stay optional if no files change in the repo on release, but I prefer to have it to mark the release in the commit history. |
2746691 to
68fca5b
Compare
|
Just delete CHANGELOG.md |
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The cliff.toml BREAKING parser misclassifies ordinary conventional commits; the upgrade prompt also needs terminology updates.
Review effort: Lite
Findings: 1
Open (1)
What changed in this PR
Automates release-note generation and GPG-signed release tagging through GitHub Actions.
Changes:
- Adds validation, authorization, dry-run, signing, and atomic publication.
- Configures git-cliff and documents the release process.
- Updates release references and spellcheck inputs.
| File | Description |
|---|---|
tools/release-tag.py |
Validates release inputs and repository state. |
README.zh-tw.md |
Updates translated security guidance. |
README.zh-cn.md |
Updates translated security guidance. |
README.md |
Updates security patch guidance. |
Makefile |
Includes current files in spellchecking. |
docs/release-management.md |
Documents the new release process. |
contrib/upgrade.sh |
Links users to GitHub Releases. |
cliff.toml |
Defines release-note formatting and grouping. |
CHANGELOG-archived.md |
Points to current GitHub releases. |
.github/workflows/release-create-tag.yml |
Orchestrates preview, signing, and publication. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
completely? what about the archived one? |
Generate release notes during publication and keep signed commit and tag messages short. Add a local script for deployment, Helm, and Terraform update PRs.
|
Doing some cleanups, also I'm sceptical regarding cliff, so I'm checking for alternatives too. |
|
I really like cliff - 100% would recommend |
Gitea releases change no files, so a release commit only added the need for branch push rights and a race with new merges. The workflow now pushes a signed annotated tag on the approved branch head, with release notes in its body that a small ci-tools command generates from the conventional commit titles, reusing the PR title parser instead of git-cliff. The first release of a line starts its notes at the -dev tag of its fork point. The downstream update script is left for a separate PR. Assisted-by: Claude Code:claude-opus-5-5
|
Pushed a rework in 6f3653e:
This comment was written by Claude. |
Didnt we say we dont put the notes in its body.
Not what we wanted
why - remove it I like the label and it makes it visible more clear that this is not changelog relevant |
|
I don't know about cliff. It's default template includes emoji, so needs a custom template in a strange language. Currently I have this in |
|
My only reason is that I've been doing it that way in all my repos because I think it's only logical and adds useful info to the tag, but no strong feeling about it. |
How other open source projects do? Or just "do as the Romans do"? |
Keep the signed tag message to the version and generate the release notes when the tag build creates the GitHub release, as discussed in the review, so the tag stays small and the notes come from the same place that publishes them. Assisted-by: Claude Code:claude-opus-5-5
|
I'll remove it then, IDK how common it is to have messages in tags. I think most repos do not care because UI does not expose tag messages prominently. |
|
Doing final cleanup now. |
|
After this is merged and before the release is done, enable this in GitHub UI at https://github.com/go-gitea/gitea/settings:
|
Pick the previous release as the highest stable version below the new tag, which gives the same commit range as the -dev tags without needing them. The skip-changelog label alone decides what is left out, since the labeler already applies it to chore and ci PRs. The git-cliff action runs git-cliff twice, so it uses RELEASE_TOKEN for the larger API rate limit. The workflows, config and docs lose what that made redundant. Assisted-by: Claude Code:claude-opus-5-5
|
@lunny we need the secrets configured |
| @@ -0,0 +1,10 @@ | |||
| [git] | |||
| commit_parsers = [ | |||
| { field = "remote.pr_labels", pattern = "^skip-changelog$", skip = true }, | |||
There was a problem hiding this comment.
Because skip-changelog could be added manually.
There was a problem hiding this comment.
What type? We have 2 types that imply skip-changelog. And users should be free to manually set the label.
Thought I guess it is unlikely that it's needed so it could be purely type-based too and then we should delete the label because it serves no purpose.
There was a problem hiding this comment.
I wouldn't support that
Give me one real reason how this could happen
Why would you call a commit "feat" and skip changelog
There was a problem hiding this comment.
adjusted to what? don't force me to read the diff.
There was a problem hiding this comment.
I have no opinion actually. Either is fine ( label-only, commit-message-only, commit-message + label)
(It's just unclear to me what we would do with "skip-changelog" label in the future)
Update: see next comment
There was a problem hiding this comment.
"What type? We have 2 types that imply skip-changelog. And users should be free to manually set the label."
I think it is true.
For example: a feature landed on main branch, then a follow-up "fix" to correct it. The "fix" prefix is correct because it does fix bugs, but we don't need to mention such follow-up fix in changelog, since it belongs to the feature.
Assisted-by: Claude Code:claude-opus-5-5
Release branches are already described in the versions section. Assisted-by: Claude Code:claude-opus-5-5
|
I think we already have |
Which email address is registered to it? |
teabot [at] gitea.io |
|
created the environment + adjusted the identity + adjusted the secrets - should be ready now |
|
its ready |
|
@silverwind we forgot one point - the security section |


Automate release tagging as proposed in #39544 (comment), part of #39550.
A maintainer selects a release branch and version in the
release-create-tagworkflow. After approval through therelease-signingenvironment, it pushes a GPG-signed tag. The tag starts the existing release build, which generates GitHub release notes with git-cliff from commits since the previous release, excluding PRs labeledskip-changelog.CHANGELOG.mdand release-candidate releases are removed. The workflow reuses the existingGPGSIGN_KEY,GPGSIGN_PASSPHRASE, andRELEASE_TOKENrepository secrets.Before using the workflow:
release-signingenvironment forrelease/v*branches with maintainers as required reviewers.Closes #39550