related #1682
The previous implementation on #5560 has a bug (it works on my mac
though) where it cannot recognize the released section correctly and
pass every modification to the changelog file. This PR fixes the issue.
Action result if we changed the unreleased section:
ab9eecb8a8
Action result if we changed the released section:
c751dc1255
resolve#1682
This PR adds a new action in CI to protect released sections in the
changelog from being changed. It compares the released sections in the
changelog from the base branch to the current PR. It fails if a change
happens.
Apply "Unlock Released Changelog" to bypass this check when doing a new
release.
Action result if we changed the unreleased section:
d640deb435
Action result if we changed the released section:
d672de7a54
---
Meaning of `awk '/^\<!-- Released section --\>/ {flag=1} /^\<!--
Released section ended --\>/ {flag=0} flag'`
- `/^\<!-- Released section --\>/ {flag=1}`
- Matches lines starting with `<!-- Released section -->`.
- Sets the flag variable to 1 (starting the printing of lines).
- `/^\<!-- Released section ended --\>/ {flag=0}`
- Matches lines starting with `<!-- Released section ended -->`.
- Sets the flag variable to 0.
- So it is ok to change external reference links, like
```md
[Go 1.22]: https://go.dev/doc/go1.22
[Go 1.21]: https://go.dev/doc/go1.21
```
- `flag` lines are printed only when the flag is 1.
---------
Co-authored-by: Robert Pająk <pellared@hotmail.com>