cassandra-pr mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From michaelsembwever <...@git.apache.org>
Subject [GitHub] cassandra pull request #230: Add developer docs for creating releases
Date Tue, 04 Sep 2018 01:30:09 GMT
Github user michaelsembwever commented on a diff in the pull request:

    https://github.com/apache/cassandra/pull/230#discussion_r214768790
  
    --- Diff: doc/source/development/release_process.rst ---
    @@ -0,0 +1,247 @@
    +.. 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
    +
    +| 
    +|
    +
    +Here Release Managers will find the steps for creating, voting and publishing a release
for Apache Cassandra.
    +A committer can perform the initial steps of creating and calling a vote on a proposed
release, but only a PMC can complete the process of publishing and announcing the release.
    +
    +
    +Prerequisites
    +=============
    +
    +Be familiar with the following
    + * `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::
    +
    +    cd ..
    +    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
    +    svn mv https://dist.apache.org/repos/dist/dev/cassandra/<version> https://dist.apache.org/repos/dist/release/cassandra/
    +    svn co https://dist.apache.org/repos/dist/release/cassandra/<version> cassandra-dist-<version>
    +    cd cassandra-dist-<version>
    +
    +    createrepo .
    +    gpg --detach-sign --armor repodata/repomd.xml
    +    for f in `find repodata/ -name *.bz2`; do
    +      gpg --detach-sign --armor $f;
    +    done
    --- End diff --
    
    @mshuler ping


---

---------------------------------------------------------------------
To unsubscribe, e-mail: pr-unsubscribe@cassandra.apache.org
For additional commands, e-mail: pr-help@cassandra.apache.org


Mime
View raw message