...
Copy release files to a public place and ensure they are readable. Note that home.apache.org only supports SFTP, so this may be easier with a graphical SFTP client like Nautilus, Konqueror, etc.
Stage source and binaries to Apache dev repo
Copy release files to a public place and ensure they are readable.
Code Block |
---|
# Staged artifacts built by "release:perform" are in target/checkout cd target/checkout/zookeeper-assembly/target sftp home.apache.org cd public_htmlZKHOME=where you have your work directory "zookeeper" svn co https://dist.apache.org/repos/dist/dev/zookeeper/ zookeeper_dev cd zookeeper_dev mkdir zookeeper-$VERSION-candidate-0 cd zookeeper-$VERSION-candidate-0 put *-bincp $ZKHOME/target/checkout/target/*.tar.gz* . put cp $ZKHOME/target/checkout/zookeeper-assembly/target/*-bin.tar.gz* .asc putrm *-bin.tar.gzasc.sha512 lcd ../../target # pwd should be target/checkout/target put *.tar.gz put *.tar.gz.asc put *.tar.gz.sha512 # uplading website (sftp needs directory tree to be pre-created?) lcd ../zookeeper-docs/target/html mkdir website mkdir website/images mkdir website/skin cd website put -r * |
Stage source and binaries to Apache dev repo
Copy release files to a public place and ensure they are readable.
Code Block |
---|
# Staged artifacts built by "release:perform" are in target/checkout
ZKHOME=where you have your work directory "zookeeper"
svn co https://dist.apache.org/repos/dist/dev/zookeeper/ zookeeper_dev
cd zookeeper_dev
mkdir zookeeper-$VERSION-candidate-0
cd zookeeper-$VERSION-candidate-0
cp $ZKHOME/target/checkout/target/*.tar.gz* .
cp $ZKHOME/target/checkout/zookeeper-assembly/target/*-bin.tar.gz* .
rm *.asc.sha512
mkdir website
cp -r $ZKHOME/target/checkout/zookeeper-docs/target/html/* website/
cd ..
svn add zookeeper-$VERSION-candidate-0
svn ci -m "Add ZooKeeper X.Y.Z release candidate 0" |
Call for VOTE
mkdir website
cp -r $ZKHOME/target/checkout/zookeeper-docs/target/html/* website/
cd ..
svn add zookeeper-$VERSION-candidate-0
svn ci -m "Add ZooKeeper X.Y.Z release candidate 0" |
Call for VOTE
Call for a release vote Call for a release vote on dev (note dev@ and not user@, the user list is for discussion of released software only) at zookeeper.apache.org. Here is a sample email (from 3.4.6 release):
Subject: [VOTE] Apache ZooKeeper release 3.8.0 candidate 0
This is a release candidate for 3.8.0.
It is a major release and it introduces a lot of new features, most notably:
- Migration of the logging framework from Apache Log4j1 to LogBack
- Read Key/trust store password from file (and other security related
improvements)
- Restored support for OSGI
- Reduced the performance impact of Prometheus metrics
- Official support for JDK17 (all tests are passing)
- Updates to all the third party dependencies to get rid of every known CVE.The full release notes is available at:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310801&version=12349587
*** Please download, test and vote by February 28th 2022, 23:59 UTC+0. ***
Source files:
https://dist.apache.org/repos/dist/dev/zookeeper/zookeeper-3.8.0-candidate-1/Maven staging repo:
https://repository.apache.org/content/repositories/orgapachezookeeper-1073/The release candidate tag in git to be voted upon: release-3.8.0-1
https://github.com/apache/zookeeper/tree/release-3.8.0-1ZooKeeper's KEYS file containing PGP keys we use to sign the release:
https://www.apache.org/dist/zookeeper/KEYSThe staging version of the website is:
https://dist.apache.org/repos/dist/dev/zookeeper/zookeeper-3.8.0-candidate-1/website/index.html
Should we release this candidate?Release Manager Signature
...
Once three PMC members have voted for a release, it may be published.
- Answer to the VOTE email thread with a final RESULT email like this one:
Code Block Subject: [RESULT] [VOTE] Apache ZooKeeper release 3.6.0 candidate 0 I'm happy to announce that we have unanimously approved this release. There are 7 approving votes, 5 of which are binding: - approver 1... - approver 2...(binding) - approver 3... There are no disapproving votes. I will promote the artifacts and complete the release procedure. Thanks to every one who contributed to this great release ! Release Manager Signature
- Compare and sync the WORK_BRANCH with the RELEASE_BRANCH, check RELEASE NOTES and Maven Version in pom.xml and in the C client:
- :
Code Block Subject: [RESULT] [VOTE] Apache ZooKeeper release 3.6.0 candidate 0 I'm happy to announce that we have unanimously approved this release. There are 7 approving votes, 5 of which are binding: - approver 1... - approver 2...(binding) - approver 3... There are no disapproving votes. I will promote the artifacts and complete the release procedure. Thanks to every one who contributed to this great release ! Release Manager Signature
- Compare and sync the WORK_BRANCH with the RELEASE_BRANCH, check RELEASE NOTES and Maven Version in pom.xml and in the C client:
Update the version in $BRANCH_NAME (like branch-3.6), the Maven Release plugin pushed it to the WORK_BRANCH, you can cherry pick it but in case of conflict (if the branch diverged) you can do it with this command
Code Block git checkout $BRANCH_NAME git pull mvn release:update-versions -DdevelopmentVersion=$RELEASE_DEVELOPMENT_VERSION -Pfull-build # verify that we are committing only pom.xml files git status git diff git add . git commit -m "Start ZooKeeper $RELEASE_DEVELOPMENT_VERSION" git push
Tag the release. Do it from the release branch and push the created tag to the remote repository, drop the $WORK_BRANCH:
Code Block git checkout $TAG # create a signed tag RELEASE_TAG=release-$RELEASE_VERSION git tag -s $RELEASE_TAG -m "ZooKeeper $RELEASE_VERSION release." git branch -D $WORK_BRANCH git push -d origin $WORK_BRANCH # push the newly created release tag to the remote repo (it should be "origin" if you cloned a frash new copy of apache repo). git push origin $RELEASE_TAG
- Check in release files to the distribution server
Code Block svn co https://dist.apache.org/repos/dist/dev/zookeeper/ zookeeper_dev cd zookeeper_devsvn rm https://dist.apache.org/repos/dist/dev/zookeeper/zookeeper-$RELEASE_VERSION-candidate-$RC/website -m "Remove staged website for ZooKeeper 3.8.0rc1" svn move https://dist.apache.org/repos/dist/dev/zookeeper/zookeeper-$RELEASE_VERSION-candidate-1
- Check in release files to the distribution server
Code Block svn co https://dist.apache.org/repos/dist/release/zookeeper/ zookeeper_dist cd zookeeper_dist mkdir zookeeper-$RELEASE_VERSION # copy tgz/asc/checksum files from your public_html to zookeeper-X.Y.Z svn add zookeeper-X.Y.Z svn ci -m "AddRelease Apache ZooKeeper X.Y.Z release" $RELEASE_VERSION"
- After checking in the release, you'll receive an automated email from reporter.apache.org with a link requesting additional details about the release. This form must be completed by a PMC member. If you are a PMC members, follow the link and complete the form. If you are not a PMC member, forward the email to dev@zookeeper.apache.org and ask for assistance from a PMC member.
The release directory usually contains just two releases, the most recent from two branches, with a link named 'stable' to the most recent recommended version.
Code Block cd zookeeper_dist svn rm zookeeper-A.B.C # apache folks don't like old releases hanging around - they are available in the archive if people need access rm stable; rm current ln -s zookeeper-A.B.D stable ln -s zookeeper-A.B.D current svn ci -m 'Updating links'
- Release the Maven artifacts on Apache Nexus:
- Click on 'Staging repositories'.
- Select the repository corresponding to the release candidate.
- Click on the 'Release' button and follow instructions.
- Wait 24 hours for release to propagate to mirrors.
Prepare to edit the website. ZooKeeper uses Jekyll/Markdown with gitpubsub. See WebSiteSetup for general instructions and tool setup/prerequisites.
Code Block git clone -b website https://gitbox.apache.org/repos/asf/zookeeper.git
Copy the new release documentation into the _released_docs directory
Code Block cd _released_docs mkdir rX.Y.Z cd rX.Y.Z tar xvf apache-zookeeper-X.Y.Z-bin.tar.gz --strip-components 2 'apache-zookeeper-X.Y.Z-bin/docs' rm apache-zookeeper-X.Y.Z-bin.tar.gz # Update the "current" doc pointer if necessary (next 2 lines) cd .. rm current ln -s rX.Y.Z current git add rX.Y.Z current cd ..
- Change directory to src/main/resources/markdown
- Update the release news in releases.md
- Update the nav panel in html/header.html and documentation.md to include X.Y.Z
Stage changes to git
Code Block git add releases.md documentation.md html/header.html
Regenerate the site, review it, then commit it. (install Jekyll/pygments if you haven't already - see the README.md in website branch)
Code Block mvn clean install cp -RP _released_docs target/html/doc # at this point verify that the site is working properly - open _site/index.html # once you are happy move on to the next step... git commit -m "Updated website content for release X.Y.Z." git push origin website
Deploy: you are now ready to deploy the changes to the public website using gitpubsub. Using the same repo as the previous step:
Code Block git checkout asf-site rm -fr content mv target/html content git add content # verify that the content of "content" looks proper. open content/index.html in a browser and verify, etc... # verify git staging looks proper - remember, we added the release docs to content/doc/rX.Y.Z and that will also be added here git commit -m "Website update for release X.Y.Z" git push origin asf-site
If the apache zookeeper website does not update, check if the commit is mirrored into github.com/apache/zookeeper asf-site branch
Send announcements to the user and developer lists once the site changes are visible. Here is a sample email:
No Format Subject: [ANNOUNCE] Apache ZooKeeper X.Y.Z The Apache ZooKeeper team is proud to announce Apache ZooKeeper version X.Y.Z ZooKeeper is a high-performance coordination service for distributed applications. It exposes common services - such as naming, configuration management, synchronization, and group services - in a simple interface so you don't have to write them from scratch. You can use it off-the-shelf to implement consensus, group management, leader election, and presence protocols. And you can build on it for your own, specific needs. For ZooKeeper release details and downloads, visit: https://zookeeper.apache.org/releases.html ZooKeeper X.Y.Z Release Notes are at: https://zookeeper.apache.org/doc/rX.Y.Z/releasenotes.html We would like to thank the contributors that made the release possible. Regards, The ZooKeeper Team
- In Jira, ensure that only issues in the "Fixed" state have a "Fix Version" set to release X.Y.Z.
- In Jira, "release" the version. Visit the "Administer Project" page, then the "Manage versions" page. You need to have the "Admin" role in ZooKeeper's Jira for this step and the next.
- In Jira, close issues resolved in the release. Disable mail notifications for this bulk change.
Update the version in $BRANCH_NAME (like branch-3.6), the Maven Release plugin pushed it to the WORK_BRANCH, you can cherry pick it but in case of conflict (if the branch diverged) you can do it with this command
Code Block git checkout $BRANCH_NAME git pull mvn release:update-versions -DdevelopmentVersion=$RELEASE_DEVELOPMENT_VERSION -Pfull-build # verify that we are committing only pom.xml files git status git diff git add . git commit -m "Start ZooKeeper $RELEASE_DEVELOPMENT_VERSION" git push
Tag the release. Do it from the release branch and push the created tag to the remote repository, drop the $WORK_BRANCH:
Code Block git checkout $TAG # create a signed tag RELEASE_TAG=release-$RELEASE_VERSION git tag -s $RELEASE_TAG -m "ZooKeeper $RELEASE_VERSION release." git branch -D $WORK_BRANCH git push -d origin $WORK_BRANCH # push the newly created release tag to the remote repo (it should be "origin" if you cloned a frash new copy of apache repo). git push origin $RELEASE_TAG
- Answer to the VOTE email thread with a final RESULT email like this one:
...