You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by mc...@apache.org on 2020/01/28 06:58:56 UTC

[cassandra] branch trunk updated (6449f40 -> f1e94db)

This is an automated email from the ASF dual-hosted git repository.

mck pushed a change to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git.


    from 6449f40  Update NEWS for CASSANDRA-15257
     new 06a3604  Source and build artifacts are published with sha512 checksums
     new 5508fec  Merge branch 'cassandra-2.2' into cassandra-3.0
     new d71625a  Merge branch 'cassandra-3.0' into cassandra-3.11
     new f1e94db  Merge branch 'cassandra-3.11' into trunk

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 build.xml                                  | 88 +++++++++++++-----------------
 doc/source/development/dependencies.rst    |  1 -
 doc/source/development/release_process.rst | 26 +--------
 3 files changed, 40 insertions(+), 75 deletions(-)


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


[cassandra] 01/01: Merge branch 'cassandra-3.11' into trunk

Posted by mc...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mck pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit f1e94db34ccea660b320f9a571a998fd370e7f8c
Merge: 6449f40 d71625a
Author: Mick Semb Wever <mc...@apache.org>
AuthorDate: Tue Jan 28 07:57:30 2020 +0100

    Merge branch 'cassandra-3.11' into trunk

 build.xml                                  | 88 +++++++++++++-----------------
 doc/source/development/dependencies.rst    |  1 -
 doc/source/development/release_process.rst | 26 +--------
 3 files changed, 40 insertions(+), 75 deletions(-)

diff --cc build.xml
index 3af3163,7deef1e..cad8ca4
--- a/build.xml
+++ b/build.xml
@@@ -781,25 -667,26 +802,15 @@@
          <dependency groupId="com.github.ben-manes.caffeine" artifactId="caffeine" />
          <dependency groupId="org.jctools" artifactId="jctools-core"/>
          <dependency groupId="org.ow2.asm" artifactId="asm" />
 -      </artifact:pom>
 -      <artifact:pom id="thrift-pom"
 -                    artifactId="cassandra-thrift"
 -                    url="https://cassandra.apache.org"
 -                    name="Apache Cassandra">
 -        <parent groupId="org.apache.cassandra"
 -                artifactId="cassandra-parent"
 -                version="${version}"/>
 -        <scm connection="${scm.connection}" developerConnection="${scm.developerConnection}" url="${scm.url}"/>
 -        <dependency groupId="org.apache.commons" artifactId="commons-lang3"/>
 -        <dependency groupId="org.slf4j" artifactId="slf4j-api"/>
 -        <dependency groupId="org.slf4j" artifactId="log4j-over-slf4j"/>
 -        <dependency groupId="org.slf4j" artifactId="jcl-over-slf4j"/>
 -        <dependency groupId="org.apache.thrift" artifactId="libthrift"/>
 -        <dependency groupId="com.carrotsearch" artifactId="hppc" version="0.5.4" />
 -        <dependency groupId="de.jflex" artifactId="jflex" version="1.6.0" />
 -        <dependency groupId="com.github.rholder" artifactId="snowball-stemmer" version="1.3.0.581.1" />
 -        <dependency groupId="com.googlecode.concurrent-trees" artifactId="concurrent-trees" version="2.4.0" />
 -
 +        <dependency groupId="com.carrotsearch" artifactId="hppc" />
 +        <dependency groupId="org.gridkit.jvmtool" artifactId="sjk-cli" />
 +        <dependency groupId="org.gridkit.jvmtool" artifactId="sjk-core" />
 +        <dependency groupId="org.gridkit.jvmtool" artifactId="sjk-stacktrace" />
 +        <dependency groupId="org.gridkit.jvmtool" artifactId="mxdump" />
 +        <dependency groupId="org.gridkit.lab" artifactId="jvm-attach-api" />
 +        <dependency groupId="com.beust" artifactId="jcommander" />
 +        <dependency groupId="org.gridkit.jvmtool" artifactId="sjk-json"/>
        </artifact:pom>
-       <artifact:pom id="dist-pom"
-                     artifactId="apache-cassandra"
-                     packaging="pom"
-                     url="https://cassandra.apache.org"
-                     name="Apache Cassandra">
-         <parent groupId="org.apache.cassandra"
-                 artifactId="cassandra-parent"
-                 version="${version}"/>
-         <scm connection="${scm.connection}" developerConnection="${scm.developerConnection}" url="${scm.url}"/>
-       </artifact:pom>
      </target>
  
      <target name="maven-ant-tasks-retrieve-build" depends="maven-declare-dependencies" unless="without.maven">
@@@ -1180,13 -1098,6 +1191,11 @@@
              <include name="*.jar" />
          </fileset>
        </copy>
-       <artifact:writepom pomRefId="dist-pom"
-             file="${build.dir}/${final.name}-dist.pom"/>
 +    </target>
 +
 +    <!-- creates release tarballs -->
 +    <target name="artifacts" depends="_artifacts-init"
 +            description="Create Cassandra release artifacts">
        <tar compression="gzip" longfile="gnu"
          destfile="${build.dir}/${final.name}-bin.tar.gz">
  
@@@ -2247,19 -2108,16 +2254,6 @@@
               file="${build.dir}/${final.name}-parent.pom"
               packaging="pom"/>
  
-     <!-- the distribution -->
-     <install pomFile="${build.dir}/${final.name}-dist.pom"
-              file="${build.dir}/${final.name}-dist.pom"
-              packaging="pom"/>
-     <install pomFile="${build.dir}/${final.name}-dist.pom"
-              file="${build.dir}/${final.name}-bin.tar.gz"
-              packaging="tar.gz"
-              classifier="bin"/>
-     <install pomFile="${build.dir}/${final.name}-dist.pom"
-              file="${build.dir}/${final.name}-src.tar.gz"
-              packaging="tar.gz"
-              classifier="src"/>
 -    <!-- the cassandra-thrift jar -->
 -    <install pomFile="${build.dir}/${ant.project.name}-thrift-${version}.pom"
 -             file="${build.dir}/${ant.project.name}-thrift-${version}.jar"/>
 -    <install pomFile="${build.dir}/${ant.project.name}-thrift-${version}.pom"
 -             file="${build.dir}/${ant.project.name}-thrift-${version}-sources.jar"
 -             classifier="sources"/>
 -    <install pomFile="${build.dir}/${ant.project.name}-thrift-${version}.pom"
 -             file="${build.dir}/${ant.project.name}-thrift-${version}-javadoc.jar"
 -             classifier="javadoc"/>
--
      <!-- the cassandra-all jar -->
      <install pomFile="${build.dir}/${final.name}.pom"
               file="${build.dir}/${final.name}.jar"/>
@@@ -2280,19 -2139,16 +2274,6 @@@
              file="${build.dir}/${final.name}-parent.pom"
              packaging="pom"/>
  
-     <!-- the distribution -->
-     <deploy pomFile="${build.dir}/${final.name}-dist.pom"
-             file="${build.dir}/${final.name}-dist.pom"
-             packaging="pom"/>
-     <deploy pomFile="${build.dir}/${final.name}-dist.pom"
-             file="${build.dir}/${final.name}-bin.tar.gz"
-             packaging="tar.gz"
-             classifier="bin"/>
-     <deploy pomFile="${build.dir}/${final.name}-dist.pom"
-             file="${build.dir}/${final.name}-src.tar.gz"
-             packaging="tar.gz"
-             classifier="src"/>
 -    <!-- the cassandra-thrift jar -->
 -    <deploy pomFile="${build.dir}/${ant.project.name}-thrift-${version}.pom"
 -            file="${build.dir}/${ant.project.name}-thrift-${version}.jar"/>
 -    <deploy pomFile="${build.dir}/${ant.project.name}-thrift-${version}.pom"
 -            file="${build.dir}/${ant.project.name}-thrift-${version}-sources.jar"
 -            classifier="sources"/>
 -    <deploy pomFile="${build.dir}/${ant.project.name}-thrift-${version}.pom"
 -            file="${build.dir}/${ant.project.name}-thrift-${version}-javadoc.jar"
 -            classifier="javadoc"/>
--
      <!-- the cassandra-all jar -->
      <deploy pomFile="${build.dir}/${final.name}.pom"
              file="${build.dir}/${final.name}.jar"/>
diff --cc doc/source/development/dependencies.rst
index 7d230d3,0000000..6dd1cc4
mode 100644,000000..100644
--- a/doc/source/development/dependencies.rst
+++ b/doc/source/development/dependencies.rst
@@@ -1,54 -1,0 +1,53 @@@
 +.. 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.
 +
 +Dependency Management
 +*********************
 +
 +Managing libraries for Cassandra is a bit less straight forward compared to other projects, as the build process is based on ant, maven and manually managed jars. Make sure to follow the steps below carefully and pay attention to any emerging issues in the :doc:`ci` and reported related issues on Jira/ML, in case of any project dependency changes.
 +
 +As Cassandra is an Apache product, all included libraries must follow Apache's `software license requirements <https://www.apache.org/legal/resolved.html>`_.
 +
 +Required steps to add or update libraries
 +=========================================
 +
 +* Add or replace jar file in ``lib`` directory
 +* Add or update ``lib/license`` files
 +* Update dependencies in ``build.xml``
 +
 +  * Add to ``parent-pom`` with correct version
 +  * Add to ``all-pom`` if simple Cassandra dependency (see below)
 +
 +
 +POM file types
 +==============
 +
 +* **parent-pom** - contains all dependencies with the respective version. All other poms will refer to the artifacts with specified versions listed here.
 +* **build-deps-pom(-sources)** + **coverage-deps-pom** - used by ``ant build`` compile target. Listed dependenices will be resolved and copied to ``build/lib/{jar,sources}`` by executing the ``maven-ant-tasks-retrieve-build`` target. This should contain libraries that are required for build tools (grammar, docs, instrumentation), but are not shipped as part of the Cassandra distribution.
 +* **test-deps-pom** - refered by ``maven-ant-tasks-retrieve-test`` to retrieve and save dependencies to ``build/test/lib``. Exclusively used during JUnit test execution.
 +* **all-pom** - pom for `cassandra-all.jar <https://mvnrepository.com/artifact/org.apache.cassandra/cassandra-all>`_ that can be installed or deployed to public maven repos via ``ant publish``
- * **dist-pom** - pom for tarball distribution (cassandra-{bin,src}.tar.gz) created by ``ant artifacts``. Should be left as is, but needed for installing or deploying releases.
 +
 +
 +Troubleshooting and conflict resolution
 +=======================================
 +
 +Here are some useful commands that may help you out resolving conflicts.
 +
 +* ``ant realclean`` - gets rid of the build directory, including build artifacts.
 +* ``mvn dependency:tree -f build/apache-cassandra-*-SNAPSHOT.pom -Dverbose -Dincludes=org.slf4j`` - shows transitive dependency tree for artifacts, e.g. org.slf4j. In case the command above fails due to a missing parent pom file, try running ``ant mvn-install``.
 +* ``rm ~/.m2/repository/org/apache/cassandra/apache-cassandra/`` - removes cached local Cassandra maven artifacts
 +
 +
diff --cc doc/source/development/release_process.rst
index 0ab6dff,0000000..b21ef9b
mode 100644,000000..100644
--- a/doc/source/development/release_process.rst
+++ b/doc/source/development/release_process.rst
@@@ -1,268 -1,0 +1,248 @@@
 +.. 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/release/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.
++Check that there are no open urgent jira tickets currently being worked on. Also check with a PMC that there's security vulnerabilities currently being worked on in private.'
++Current project habit is to check the timing for a new release on the dev mailing lists.
 +
 +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>
- 
- After committing the binaries to staging, increment the version number in Cassandra on the `cassandra-<version-branch>`
++After validating the uploaded artifacts in staging, increment the version number in Cassandra on the `cassandra-<version-branch>`
 +
 +    cd ~/git/cassandra/
 +    git checkout cassandra-<version-branch>
 +    edit build.xml          # update `<property name="base.version" value="…"/> `
 +    edit debian/changelog   # add entry for new version
 +    edit CHANGES.txt        # add entry for new version
 +    git commit -m "Update version to <next-version>" build.xml debian/changelog CHANGES.txt
 +    git push
 +
 +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: https://gitbox.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 Slack Cassandra topic
 +---------------------------
 +
 +Update topic in ``cassandra`` :ref:`Slack room <slack>`
 +    /topic cassandra.apache.org | Latest releases: 3.11.4, 3.0.18, 2.2.14, 2.1.21 | 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-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org