Writing release notes
Pulsar release notes consist of the following parts:
Prerequisite
To generate release notes, you are suggested to install the GitHub CLI and authenticate first:
brew install gh
gh auth login
Register the new released version to releases.json, data/release-pulsar.js and data/release-java.js files
# Replace 3.0.6 with the target version tag
VERSION_WITHOUT_RC=3.0.6
PREVIOUS_VERSION=3.0.5
# Replace apache/pulsar with the component repo
./scripts/register_new_version.py $VERSION_WITHOUT_RC $PREVIOUS_VERSION $(gh release view "v$VERSION_WITHOUT_RC" -R apache/pulsar --json author,publishedAt | jq -r '[.author.login, .publishedAt] | join(" ")')
Alternatively, for a tag instead of a release:
# For a tag instead of a release
./scripts/register_new_version.py $VERSION_WITHOUT_RC $PREVIOUS_VERSION $(cd $PULSAR_PATH && git show -s --format="%ae %aI" "v$VERSION_RC" | tail -n 1 | sed 's/@.* / /')
Generate release notes
There isn't a definite way yet. You will need to categorize the PRs into different sections manually and edit the release note file. These commands are used to generate the release note entries.
Here are 2 approaches:
Using "git log" (copies output to clipboard using pbcopy)
PREVIOUS_VERSION=3.0.3
VERSION_WITHOUT_RC=3.0.4
cd $PULSAR_PATH
git log --reverse --oneline v$PREVIOUS_VERSION..v$VERSION_WITHOUT_RC | colrm 1 12 | sed 's/\] \[/][/' | perl -p -e 's/^\s+//' | awk -F ']' '{
if ($1 ~ /^\[/) {
print $1 "]" $2, $0
} else {
print "[zzz]", $0
}
}' | sort | cut -d ' ' -f2- | sed 's/\(#\([0-9]\+\)\)/[#\2](https:\/\/github.com\/apache\/pulsar\/pull\/\2)/g' | sed 's/^/- /' | sed 's/</\</g' | sed 's/>/\>/g' \
| pbcopy
Alternatively using "gh pr list"
gh pr list -L 1000 --search "is:pr is:merged label:release/2.10.6 label:cherry-picked/branch-2.10" --json title,number,url | jq -r '.[] | "- \(.title) ([#\(.number)](\(.url)))"' | sort | pbcopy
For feature releases, using the milestone:
gh pr list -L 1000 --search "is:pr is:merged milestone:4.0.0" --json title,number,url | jq -r '.[] | "- \(.title) ([#\(.number)](\(.url)))"' | sort | pbcopy
Update the release note page
The following steps are handled by the script ./scripts/generate_release_notes.py
.
- Copy the related release notes entries and add a versioned release note file.
- Update the version metadata files (
release-*.js
). For apache/pulsar releases, this means updatingrelease-java.js
(Java client) andrelease-pulsar.js
(Pulsar). - For every apache/pulsar release, you should add a
<release-version>
entry to the corresponding place in thereleases.json
file.
Update swagger files. ref: swagger files
To preview the result, follow the instructions for previewing content.
Submit the release note
Submit a PR against the site repo with the added version release note file and updated version metadata files.
Here are some examples:
- Add the release note for C++ client 3.1.0
- Add the release note for Python client 3.0.0
- Add the release note for Pulsar 3.0.3
Check whether the release information is shown on the Pulsar Release Note page after the website is updated and built successfully.