Skip to content

Release process

tison edited this page May 12, 2023 · 30 revisions

This guide illustrates how to perform a release for Apache Pulsar Manager.

In general, you need to perform the following steps:

  1. Create a release branch.
  2. Update the version and tag of a package.
  3. Build and inspect an artifact.
  4. Sign and stage the artifacts.
  5. Move the master branch to the next version.
  6. Run a vote.
  7. Promote the release.
  8. Announce the release.
  9. Publish a Docker Image.
  10. Update the release note.
  11. Update the website
  12. Announce the release.

Steps in detail

  1. Create a release branch.

This example creates a branch branch-0.X.0 based on master where tags will be generated and new fixes will be applied as parts of the maintenance for the release.

The branch needs only to be created when creating a minor release rather than a patch release.

It is recommended to create a fresh clone of the repository to avoid any local files interfering in the process:

git clone [email protected]:apache/pulsar-manager.git
cd pulsar-manager
git checkout -b branch-0.X.0 origin/master
  1. Update the version and tag of a package.

During the release process, you can create a "candidate" tag which will get promoted to the "real" final tag after verification and approval.

# Bump to the backend release version
$ ./gradlew incrementVersion -Pversion=0.X.0
$ cd front-end
$ npm version 0.X.0

# Commit 
$ git commit -m "Release 0.X.0" -a

export GPG_TTY=$(tty)

# Create a "candidate" tag
$ git tag -u [email protected] v0.X.0-candidate-1 -m 'Release v0.X.0-candidate-1'

# Push both the branch and the tag to Github repo
git push origin branch-0.X.0
git push origin v0.X.0-candidate-1
  1. Build and inspect an artifact.

Generate a release candidate source package:

$ git archive --format=tar.gz --output=apache-pulsar-manager-0.X.0-src.tar.gz --prefix=apache-pulsar-manager-0.X.0-src/ HEAD

Generate a jar package for the backend.

$ ./gradlew clean distTar

Generate a dist file for the frontend.

$ cd front-end
$ npm install --save
$ npm run build:prod

Generate a release candidate binary package:

$ mkdir -p temp-release/apache-pulsar-manager-0.X.0-bin
$ cp ../distribution/LICENSE.bin.txt temp-release/apache-pulsar-manager-0.X.0-bin/LICENSE
$ cp ../distribution/NOTICE.bin.txt temp-release/apache-pulsar-manager-0.X.0-bin/NOTICE
$ cp -r ../distribution/licenses temp-release/apache-pulsar-manager-0.X.0-bin/
$ cp -r ../build/distributions/pulsar-manager.tar ../front-end/dist temp-release/apache-pulsar-manager-0.X.0-bin
$ cd temp-release
$ tar -czvf apache-pulsar-manager-0.X.0-bin.tar.gz apache-pulsar-manager-0.X.0-bin
  1. Sign and stage the artifacts The src and bin artifacts need to be signed and uploaded to the dist SVN repository for staging.
gpg -b --armor apache-pulsar-manager-0.X.0-bin.tar.gz
gpg -b --armor apache-pulsar-manager-0.X.0-src.tar.gz
shasum -a 512 apache-pulsar-manager-0.X.0-bin.tar.gz > apache-pulsar-manager-0.X.0-bin.tar.gz.sha512
shasum -a 512 apache-pulsar-manager-0.X.0-src.tar.gz > apache-pulsar-manager-0.X.0-src.tar.gz.sha512
svn co https://dist.apache.org/repos/dist/dev/pulsar/pulsar-manager pulsar-manager
cd pulsar-manager

mkdir apache-pulsar-manager-0.X.0

mv ../../apache-pulsar-manager-0.X.0-* apache-pulsar-manager-0.X.0/

svn add *
svn ci -m 'Staging artifacts and signature for Pulsar Manager release 0.X.0'
  1. Move the master branch to the next version.

You need to move the master version to the next iteration X + 1.

$ git checkout master
$ ./gradlew incrementVersion -Pversion=0.X.0
$ cd front-end
$ npm version 0.X.0
  1. Write a release note.

Check the milestone in GitHub associated with the release.

In the released item, add the list of the most important changes that happened in the release and a link to the associated milestone, with the complete list of all the changes.

  1. Run a vote.

Send an email to the Pulsar Dev mailing list:

To: [email protected]
Subject: [VOTE] Pulsar Manager Release 0.X.0 Candidate 1

Hi everyone,
Please review and vote on the release candidate #1 for the version 0.X.0, as follows:
[ ] +1, Approve the release
[ ] -1, Do not approve the release (please provide specific comments)

The complete staging area is available for your review, which includes:
* Release notes [1]
* The official Apache source and binary distributions to be deployed to dist.apache.org [2]
* Source code tag "v0.X.0" [4] with git sha XXXXXXXXXXXXXXXXXXXX

PulsarManager's KEYS file contains PGP keys we used to sign this release:
https://dist.apache.org/repos/dist/dev/pulsar/KEYS

Please download these packages and review this release candidate:

- Review release notes
- Download the source package (verify shasum, and asc) and follow the
instructions to build and run the pulsar-manager front end and back end service.
- Download the binary package (verify shasum, and asc) and follow the
instructions to run run the pulsar-manager front end and back end service.

The vote will be open for at least 72 hours. It is adopted by majority approval, with at least 3 PMC affirmative votes.


Source and binary files:
https://dist.apache.org/repos/dist/dev/pulsar/pulsar-manager/apache-pulsar-manager-0.X.0/apache-pulsar-manager-0.X.0-bin.tar.gz
https://dist.apache.org/repos/dist/dev/pulsar/pulsar-manager/apache-pulsar-manager-0.X.0/apache-pulsar-manager-0.X.0-src.tar.gz

SHA-512 checksums:

028313cbbb24c5647e85a6df58a48d3c560aacc9  apache-pulsar-manager-0.X.0-bin.tar.gz
97bb1000f70011e9a585186590e0688586590e09  apache-pulsar-manager-0.X.0-src.tar.gz

The vote should be open for at least 72 hours (3 days). Votes from Pulsar PMC members will be considered binding, while anyone else is encouraged to verify the release and vote as well.

If the release is approved here, we can then proceed to the next step.

  1. Promote the release.
$ git checkout branch-0.X.0
$ git tag -u [email protected] v0.X.0 -m 'Release v0.X.0'
$ git push origin v0.X.0

Promote the artifacts on the release location (need PMC permissions):

svn move https://dist.apache.org/repos/dist/dev/pulsar/pulsar-manager/pulsar-manager-0.X.0-candidate-1 \
         https://dist.apache.org/repos/dist/release/pulsar/pulsar-manager/pulsar-manager-0.X.0
Remove the old releases (if any). We only need the latest release there, older releases are available through the Apache archive:
# Get the list of releases
svn ls https://dist.apache.org/repos/dist/release/pulsar/pulsar-manager/

# Delete each release (except for the last one)
svn rm https://dist.apache.org/repos/dist/release/pulsar/pulsar-manager/pulsar-manager-0.X.0
  1. Publish a Docker Image.
  • Trigger the pulsar-manager-release-binaries with the tag name.
docker build -f docker/Dockerfile --platform linux/amd64 -t apachepulsar/pulsar-manager:v0.X.0 .
docker image tag apachepulsar/pulsar-manager:v0.X.0 apachepulsar/pulsar-manager:latest
docker push apachepulsar/pulsar-manager:v0.X.0
docker push apachepulsar/pulsar-manager:latest
  1. Update the release note.

Add the release note to Pulsar Manager

  1. Update the website

Add a download link to the download page

  1. Announce the release.

Once the release artifact is available in the npm registry, you can announce the release and send an email as below:

To: [email protected], [email protected], [email protected]
Subject: [ANNOUNCE] Apache Pulsar Manager 0.X.0 released

The Apache Pulsar team is proud to announce Apache Pulsar Manager version 0.X.0.

Pulsar is a highly scalable, low latency messaging platform running on
commodity hardware. It provides simple pub-sub semantics over topics,
guaranteed at-least-once delivery of messages, automatic cursor management for
subscribers, and cross-datacenter replication.

For Pulsar Manager release downloads, visit:
http://pulsar.apache.org/download/

Release Notes are at:
https://pulsar.apache.org/release-notes/pulsar-manager/

We would like to thank the contributors that made the release possible.

Regards,

The Pulsar Team
Clone this wiki locally