1) Setup Phase
1.1 Prepare a Linux box
Please use the latest version of CentOS since you can refer to Dockerfile for the detail commands of Mnemonic dependencies deployment.
The Linux box could be a host, virtual machine or docker container.
1.1.4 Deploy deps. of Mnemonic devel.
Deploy all dependencies of Mnemonic development, please referring to the Dockerfile in Mnemonic project
For CentOS
https://github.com/apache/mnemonic/blob/master/docker/Dockerfile
For Ubuntu
https://github.com/apache/mnemonic/blob/master/docker-ubuntu/Dockerfile
1.1.1.1.1 Clone your forked Mnemonic project
$ git clone https://github.com/<your_username>/mnemonic.git
NOTE: please add username as the prefix to your git URL.
1.1.1.1.1.1 Add Apache repository as upstream
$ cd <cloned_mnemonic_project_dir> $ git remote add upstream https://<your_apache_id>@git-wip-us.apache.org/repos/asf/mnemonic.git
NOTE: please add username as the prefix to your upstream git URL.
1.1.2.1 Prepare a release key
https://www.apache.org/dev/openpgp.html#generate-key
NOTE: Please use your Apache email address (<your_apache_id>@apache.org) to generate a GPG key for artifacts signing and the command "git config --get user.signingkey" should return the <gpg-key-id> of your signing key that you can find it using the command "gpg --list-keys"
1.1.2.1.1 Submit the key fingerprint
1.1.3.1 Checkout stage trunk
$ svn checkout https://<your_apache_id>@dist.apache.org/repos/dist/dev/mnemonic mnemonic-stage
1.1.3.1.1 Update KEYS file on stage trunk
Append your generated public key to this KEYS file
1.1.3.2 Checkout release trunk
$ svn checkout https://<your_apache_id>@dist.apache.org/repos/dist/release/mnemonic mnemonic-release
1.1.3.2.1 Update KEYS file on release trunk
Append your generated public key to this KEYS file
1.1.3.3 Checkout the Mnemonic project status page only
$ svn checkout https://<your_apache_id>@svn.apache.org/repos/asf/incubator/public/trunk/content/projects mnemonic-status --depth empty $ cd mnemonic-status $ svn update mnemonic.xml
1.1.4.1 Configure Maven release account
Add following setting items into your private maven settings file, i.e. ~/m2/settings.xml
<settings> .... <servers> .... <server> <id>apache.releases.https</id> <username>yourApacheID</username> <password>yourApachePassword</password> </server> <server> <id>apache.snapshots.https</id> <username>yourApacheID</username> <password>yourApachePassword</password> </server> <server> <id>repository.apache.org</id> <username>yourApacheID</username> <password>yourApachePassword</password> </server> </servers> </settings>
Please make sure you can login the following repository using above account info.
2) Release Phase
A Guide To Release Management During Incubation [http://incubator.apache.org/guides/releasemanagement.html] [http://www.apache.org/dev/release-publishing.html]
2.1.1.1 Run auto release tool
$ cd <mnemonic_project_dir> $ ./build-tools/release.sh <current release version> <next release version> <candidate Id> # for example, ./build-tools/release.sh 0.8.0 0.8.0 rc1
Note that usually, we use the same current version in above command as we cannot predict whether or not have a new candidate for this release before voting
2.1.1.1.1 Collect generated artifacts
Create a folder named <version>-incubating-rc<seqnum> e.g. 0.9.0-incubating-rc1 on the staged trunk and then copy all artifacts suffixed with *.tar.gz under target/ folder into the src folder.
2.1.1.1.1.1.1 Send vote mail to dev@list
SUBJECT : [VOTE] Release of Apache Mnemonic-<version> [rc<rc_number>]
TO : dev@mnemonic.apache.org
Hi all, This is a call for a releasing Apache Mnemonic <version>, release candidate <rc_number>. This is the new release of Mnemonic. The source tarball, including signatures, digests, etc. can be found at: https://dist.apache.org/repos/dist/dev/mnemonic/<version>-rc1/src/ The tag to be voted upon is v<version>-incubating: https://git-wip-us.apache.org/repos/asf?p=mnemonic.git;a=shortlog;h=refs/tags/v<version> The release hash is <commit_hash_code>: https://git-wip-us.apache.org/repos/asf?p=mnemonic.git;a=commit;h=<commit_hash_code> Release artifacts are signed with the following key: https://dist.apache.org/repos/dist/dev/mnemonic/KEYS KEYS file available: https://dist.apache.org/repos/dist/dev/mnemonic/KEYS For information about the contents of this release, see: https://dist.apache.org/repos/dist/dev/mnemonic/<version>-rc<rc_number>/CHANGES.txt The vote will be open for ~72 hours. Please download the release candidate and evaluate the necessary items including checking hashes, signatures, build from source, and test. The please vote: [ ] +1 Release this package as apache-mnemonic-<version> [ ] +0 no opinion [ ] -1 Do not release this package because... Thanks, <RM name> on behalf of the Apache Mnemonic community
2.1.1.1.1.1.1.1 Collect and report vote result on dev@list
SUBJECT : [RESULT][VOTE] Release of Apache Mnemonic-<version>[rc<rc_number>]
TO : dev@mnemonic.apache.org
Hi all, After being opened for over more than 72 hours, the vote for releasing Apache Mnemonic <version> passed with <count> binding +1s, <count> non-binding +1s and no 0 or -1. The link to vote thread is <vote_email_thread_https_link> * Binding votes +1s: * <voter_name> (<voter_apache_id>) ... * Non-binding votes +1s: * <voter_name> (<voter_apache_id>) ... <0 or -1 vote if any> Project Members Role Info http://mnemonic.apache.org/develop/ *Thanks all* Cheers <RM name> on behalf of the Apache Mnemonic community
2.1.1.1.1.1.1.1.1 Send vote mail to general@list
SUBJECT : [VOTE] Release of Apache Mnemonic-<version> [rc<rc_number>]TO : general@incubator.apache.org
Hello incubator PMCs, The Apache Mnemonic community PPMCs and developers have voted and approved the proposal to release Apache Mnemonic <version> (incubating). Apache Mnemonic is an advanced hybrid memory storage oriented library, it's proposed a non-volatile/durable Java object model and durable computing model that bring several advantages to significantly improve the performance of massive real-time data processing/analytic. developers are able to use this library to design their cache-less and SerDe-less high performance applications. [VOTE] thread: http://mail-archives.apache.org/mod_mbox/incubator-mnemonic-dev/... ... [VOTE RESULT] thread: http://mail-archives.apache.org/mod_mbox/incubator-mnemonic-dev/... ... We now kindly request the Incubator PMC members review and vote on this incubator release. The Apache Mnemonic-<version>-incubating release candidate is now available with the following artifacts for a project vote: The source tarball, including signatures, digests, etc. can be found at: https://dist.apache.org/repos/dist/dev/incubator/mnemonic/<version>-incubating-rc<rc_number>/src/ The tag to be voted upon is v<version>-incubating: https://git-wip-us.apache.org/repos/asf?p=incubator-mnemonic.git;a=shortlog;h=refs/tags/v<version>-incubating The release hash is <commit_hash_code>: https://git-wip-us.apache.org/repos/asf?p=incubator-mnemonic.git;a=commit;h=<commit_hash_code> Release artifacts are signed with the following key: https://dist.apache.org/repos/dist/dev/incubator/mnemonic/KEYS KEYS file available: https://dist.apache.org/repos/dist/dev/incubator/mnemonic/KEYS For information about the contents of this release, see: https://dist.apache.org/repos/dist/dev/incubator/mnemonic/<version>-incubating-rc<rc_number>/CHANGES.txt The vote will be open for ~72 hours. Please download the release candidate and evaluate the necessary items including checking hashes, signatures, build from source, and test. please vote: [ ] +1 Release this package as apache-mnemonic-<version>-incubating [ ] +0 no opinion [ ] -1 Do not release this package because... Thanks, <RM name> on behalf of the Apache Mnemonic (incubating) team
2.1.1.1.1.1.1.1.1.1 Collect and report vote result on general@list
SUBJECT : [RESULT][VOTE] Release of Apache Mnemonic-<version>-incubating [rc<rc_number>]
TO : general@incubator.apache.org
Hi all, After being opened for over more than 72 hours, the vote for releasing Apache Mnemonic <version>-incubating passed with <count> binding +1s, <count> non-binding +1s and no 0 or -1. The link to vote thread is <vote_email_thread_https_link> * Binding votes +1s: * <voter_name> (<voter_apache_id>) ... * Non-binding votes +1s: * <voter_name> (<voter_apache_id>) ... <0 or -1 vote if any> Project Members Role Info http://mnemonic.incubator.apache.org/develop/ *Thanks all* Cheers <RM name> on behalf of the Apache Mnemonic (incubating) community
Release manager can add binding votes from dev@list to this report.
2.1.1.1.1.1.1.1.1.1.2 Terminate GPG agent
$ kill $SSH_AGENT_PID
2.1.1.1.1.1.1.1.1.1.1.2 Send out new release announcement
SUBJECT : [ANNOUNCE] Apache Mnemonic-<version>-incubating released
REPLY-TO : dev@mnemonic.apache.org
TO :
announce@apache.org,
dev@mnemonic.apache.org,
user@mnemonic.apache.org
The Apache Mnemonic community is pleased to announce the release of Apache Mnemonic-<version>. Apache Mnemonic is an advanced hybrid memory storage oriented library, it's proposed a non-volatile/durable Java object model and durable computing model that bring several advantages to significantly improve the performance of massive real-time data processing/analytic. developers are able to use this library to design their cache-less and SerDe-less high performance applications. The release is available for download at: https://dist.apache.org/repos/dist/release/mnemonic/<version>-incubating The full changelog is available at: https://dist.apache.org/repos/dist/release/mnemonic/<version>-incubating/CHANGES.txt We would like to thank all contributors who made this release possible!
2.1.1.1.1.1.1.1.1.1.1.3 Clean up SVN repositories after releasing a new version
Remove all release candidates from stage trunk and remove previous versions from release trunk, only leave the latest version in release trunk.
2.1.1.1.1.1.1.1.1.1.1.4 Update Website
Update the webpage https://mnemonic.apache.org/downloads/ to reflect the release of a new version. a new JIRA ticket could be created for this action.
Note: please make sure that the new release has been sync. to mirrored sites before updating.
2.1.1.1.1.1.1.1.1.1.1.1.1 Publish project status
Please log into the following page and then click the "Build now" to publish updated project status
https://builds.apache.org/view/H-L/view/Incubator/job/Incubator%20Site/
2.1.2 Start GPG agent
$ export GPG_TTY="$(tty)" $ eval $(gpg-agent --daemon)
2.1.3 Collect version changes info.
a) Please open the Apache JIRA for Mnemonic project -- https://issues.apache.org/jira/browse/MNEMONIC
b) In the overview, click the "Versions"
c) Click the latest version that needs to be release, for example "0.8.0"
d) Click the button "Release Notes" on top-right
e) Copy the Text between "Configure Release Notes" and "Edit/Copy Release Notes"
f) Open CHANGES.txt and replace all contents with the one just copied for current RC on stage trunk
g) Copy this CHANGES.txt file to the release candidate folder on the staged trunk, please refer to section 2.1.1.1.1 Collect generated artifacts