Repository: cassandra Updated Branches: refs/heads/trunk 5fbb938ad -> 63e5763b7
Add developers docs for creating releases Patch by Mick Semb Wever; reviewed by Michael Shuler, Stefan Podkowinski for CASSANDRA-14689 This closes #230 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/63e5763b Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/63e5763b Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/63e5763b Branch: refs/heads/trunk Commit: 63e5763b7ac5dd8f769a9ecedfabfa4d585215bd Parents: 5fbb938 Author: Mick Semb Wever <m...@apache.org> Authored: Sat Jun 2 12:28:13 2018 +1000 Committer: Mick Semb Wever <m...@apache.org> Committed: Fri Sep 7 08:46:59 2018 +1000 ---------------------------------------------------------------------- doc/source/development/index.rst | 1 + doc/source/development/release_process.rst | 260 ++++++++++++++++++++++++ 2 files changed, 261 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/63e5763b/doc/source/development/index.rst ---------------------------------------------------------------------- diff --git a/doc/source/development/index.rst b/doc/source/development/index.rst index 898bbff..ffa7134 100644 --- a/doc/source/development/index.rst +++ b/doc/source/development/index.rst @@ -30,3 +30,4 @@ Contributing to Cassandra documentation ci dependencies + release_process http://git-wip-us.apache.org/repos/asf/cassandra/blob/63e5763b/doc/source/development/release_process.rst ---------------------------------------------------------------------- diff --git a/doc/source/development/release_process.rst b/doc/source/development/release_process.rst new file mode 100644 index 0000000..d5deff9 --- /dev/null +++ b/doc/source/development/release_process.rst @@ -0,0 +1,260 @@ +.. Licensed to the Apache Software Foundation (ASF) under one +.. or more contributor license agreements. See the NOTICE file +.. distributed with this work for additional information +.. regarding copyright ownership. The ASF licenses this file +.. to you under the Apache License, Version 2.0 (the +.. "License"); you may not use this file except in compliance +.. with the License. You may obtain a copy of the License at +.. +.. http://www.apache.org/licenses/LICENSE-2.0 +.. +.. Unless required by applicable law or agreed to in writing, software +.. distributed under the License is distributed on an "AS IS" BASIS, +.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +.. See the License for the specific language governing permissions and +.. limitations under the License. + +.. highlight:: none +.. release_process: + +Release Process +*************** + +.. contents:: :depth: 3 + +|Â +| + +.. attention:: + + WORK IN PROGRESS + * A number of these steps still have been finalised/tested. + * The use of people.apache.org needs to be replaced with svnpubsub and dist.apache.org + + +The steps for Release Managers to create, vote and publish releases for Apache Cassandra. + +While a committer can perform the initial steps of creating and calling a vote on a proposed release, only a PMC can complete the process of publishing and announcing the release. + + +Prerequisites +============= + +Background docs + * `ASF Release Policy <http://www.apache.org/legal/release-policy.html>`_ + * `ASF Release Distribution Policy <http://www.apache.org/dev/release-distribution>`_ + * `ASF Release Best Practices <http://www.eu.apache.org/dev/release-publishing.html>`_ + + +A debian based linux OS is required to run the release steps from. Debian-based distros provide the required RPM, dpkg and repository management tools. + + +Create and publish your GPG key +------------------------------- + +To create a GPG key, follow the `guidelines <http://www.apache.org/dev/openpgp.html>`_. +Include your public key in:: + + https://dist.apache.org/repos/dist/cassandra/KEYS + + +Publish your GPG key in a PGP key server, such as `MIT Keyserver <http://pgp.mit.edu/>`_. + + +Create Release Artifacts +======================== + +Any committer can perform the following steps to create and call a vote on a proposed release. + +Check that no open jira tickets are urgent and currently being worked on. +Also check with a PMC that there's security vulnerabilities currently being worked on in private. + +Perform the Release +------------------- + +Run the following commands to generate and upload release artifacts, to a nexus staging repository and distribution location:: + + + cd ~/git + git clone https://github.com/apache/cassandra-builds.git + # Edit the variables at the top of `cassandra-builds/cassandra-release/prepare_release.sh` + + # After cloning cassandra-builds repo, the prepare_release.sh is run from the actual cassandra git checkout, + # on the branch/commit that we wish to tag for the tentative release along with version number to tag. + # For example here <version-branch> might be `3.11` and <version> `3.11.3` + cd ~/git/cassandra/ + git checkout cassandra-<version-branch> + ../cassandra-builds/cassandra-release/prepare_release.sh -v <version> + +If successful, take note of the email text output which can be used in the next section "Call for a Vote". + +The ``prepare_release.sh`` script does not yet generate and upload the rpm distribution packages. +To generate and upload them do:: + + cd ~/git/cassandra-build + docker build -f docker/centos7-image.docker docker/ + docker run --rm -v `pwd`/dist:/dist `docker images -f label=org.cassandra.buildenv=centos -q` /home/build/build-rpms.sh <version>-tentative + rpmsign --addsign dist/*.rpm + +For more information on the above steps see the `cassandra-builds documentation <https://github.com/apache/cassandra-builds>`_. +The next step is to copy and commit these binaries to staging svnpubsub:: + + # FIXME the following commands is wrong while people.apache.org is still used instead of svnpubsub and dist.apache.org + cd ~/git + svn co https://dist.apache.org/repos/dist/dev/cassandra cassandra-dist-dev + mkdir cassandra-dist-dev/<version> + cp cassandra-build/dist/*.rpm cassandra-dist-dev/<version>/ + + svn add cassandra-dist-dev/<version> + svn ci cassandra-dist-dev/<version> + + +Call for a Vote +=============== + +Fill out the following email template and send to the dev mailing list:: + + I propose the following artifacts for release as <version>. + + sha1: <git-sha> + + Git: http://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=shortlog;h=refs/tags/<version>-tentative + + Artifacts: https://repository.apache.org/content/repositories/orgapachecassandra-<nexus-id>/org/apache/cassandra/apache-cassandra/<version>/ + + Staging repository: https://repository.apache.org/content/repositories/orgapachecassandra-<nexus-id>/ + + The distribution packages are available here: https://dist.apache.org/repos/dist/dev/cassandra/${version}/ + + The vote will be open for 72 hours (longer if needed). + + [1]: (CHANGES.txt) https://git1-us-west.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=CHANGES.txt;hb=<version>-tentative + [2]: (NEWS.txt) https://git1-us-west.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=NEWS.txt;hb=<version>-tentative + + + +Post-vote operations +==================== + +Any PMC can perform the following steps to formalize and publish a successfully voted release. + +Publish Artifacts +----------------- + +Run the following commands to publish the voted release artifacts:: + + cd ~/git + git clone https://github.com/apache/cassandra-builds.git + # edit the variables at the top of `finish_release.sh` + + # After cloning cassandra-builds repo, `finish_release.sh` is run from the actual cassandra git checkout, + # on the tentative release tag that we wish to tag for the final release version number tag. + cd ~/git/cassandra/ + git checkout <version>-tentative + ../cassandra-builds/cassandra-release/finish_release.sh -v <version> <staging_number> + +If successful, take note of the email text output which can be used in the next section "Send Release Announcement". +The output will also list the next steps that are required. The first of these is to commit changes made to your https://dist.apache.org/repos/dist/release/cassandra/ checkout. + + +Promote Nexus Repository +------------------------ + + * Login to `Nexus repository <https://repository.apache.org>`_ again. + * Click on "Staging" and then on the repository with id "cassandra-staging". + * Find your closed staging repository, right click on it and choose "Promote". + * Select the "Releases" repository and click "Promote". + * Next click on "Repositories", select the "Releases" repository and validate that your artifacts exist as you expect them. + +Sign and Upload Distribution Packages to Bintray +--------------------------------------- + +Run the following command:: + + cd ~/git + # FIXME the next command is wrong while people.apache.org is used instead of svnpubsub and dist.apache.org + svn mv https://dist.apache.org/repos/dist/dev/cassandra/<version> https://dist.apache.org/repos/dist/release/cassandra/ + + # Create the yum metadata, sign the metadata, and sign some files within the signed repo metadata that the ASF sig tool errors out on + svn co https://dist.apache.org/repos/dist/release/cassandra/redhat/ cassandra-dist-redhat + cd cassandra-dist-redhat/<abbreviated-version>x/ + createrepo . + gpg --detach-sign --armor repodata/repomd.xml + for f in `find repodata/ -name *.bz2`; do + gpg --detach-sign --armor $f; + done + + svn co https://dist.apache.org/repos/dist/release/cassandra/<version> cassandra-dist-<version> + cd cassandra-dist-<version> + cassandra-build/cassandra-release/upload_bintray.sh cassandra-dist-<version> + + +Update and Publish Website +-------------------------- + +See `docs https://svn.apache.org/repos/asf/cassandra/site/src/README`_ for building and publishing the website. +Also update the CQL doc if appropriate. + +Release version in JIRA +----------------------- + +Release the JIRA version. + + * In JIRA go to the version that you want to release and release it. + * Create a new version, if it has not been done before. + +Update to Next Development Version +---------------------------------- + +Edit and commit ``build.xml`` so the base.version property points to the next version. + +Wait for Artifacts to Sync +-------------------------- + +Wait for the artifacts to sync at http://www.apache.org/dist/cassandra/ + +Send Release Announcement +------------------------- + +Fill out the following email template and send to both user and dev mailing lists:: + + The Cassandra team is pleased to announce the release of Apache Cassandra version <version>. + + Apache Cassandra is a fully distributed database. It is the right choice + when you need scalability and high availability without compromising + performance. + + http://cassandra.apache.org/ + + Downloads of source and binary distributions are listed in our download + section: + + http://cassandra.apache.org/download/ + + This version is <the first|a bug fix> release[1] on the <version-base> series. As always, + please pay attention to the release notes[2] and let us know[3] if you + were to encounter any problem. + + Enjoy! + + [1]: (CHANGES.txt) https://git1-us-west.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=CHANGES.txt;hb=<version> + [2]: (NEWS.txt) https://git1-us-west.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=NEWS.txt;hb=<version> + [3]: https://issues.apache.org/jira/browse/CASSANDRA + +Update IRC #cassandra topic +--------------------------- + +Update #cassandra topic on irc:: + /msg chanserv op #cassandra + /topic #cassandra "cassandra.apache.org | Latest: 3.11.2 (https://goo.gl/M34ZbG) | Stable: 3.0.16 (https://goo.gl/B4Zumg) | Oldstable: 2.2.12 (https://goo.gl/Uf3GVw) | ask, don't ask to ask" + +Tweet from @Cassandra +--------------------- + +Tweet the new release, from the @Cassandra account + +Delete Old Releases +------------------- + +As described in `When to Archive <http://www.apache.org/dev/release.html#when-to-archive>`_. +Also check people.apache.org as previous release scripts used it. --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org