Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Update the README.rst file with important information. 

  • Update the README-DEV.rst file with important information. 

  • In the couchdb-documentation repository, update the src/whatsnew/X.X.rst file with important information. 

    • Compile a list of bugs fixed and improvements that have been fixed in this release.

      • See src/whatsnew/2.2.rst for an example.

      • Be sure to use the special RST syntax to link to JIRA or GH issues as appropriate.
      • This can be done with a GitHub search of the form: https://github.com/apache/couchdb/compare/2.1.0...master

      • From the command line, the following approach works well:

        git show-branch --sha1-name master X.X.X | more

        • use this to find common ancestor (very last thing in the output)
        • use this to make sure everything on X.X.X has been pulled fwd to master
        • use this to eliminate anything that "looks the same" on X.X.X branch and master
          • cannot use sha-1s because they will be different on each branch
          • research if there is a way to auto-eliminate cherry picked stuff?

        For each remaining commit on master:

        1. use GH web UI to find the commit's related PRs or issues and write up
          something nice
        2. sort by GH issue/PR number
        3. any issues that merge without a useful GH/PR number should go either at the
          very top or bottom of the list, depending on importance of issue
        4. do not explicitly list out things like Jenkins/Travis/rebar.config changes
          unless they are significant in some fashion

        Now do the same thing as above, but for documentation and fauxton. Pull out only
        the big-ticket items.

    • If the release has already been forked onto a maintenance branch, be sure to look at the master branch for any changes that won't make this release. These may be candidates for Known Issues in the documentation.
    • Add a breaking changes section to this file if necessary. 

    • Add any deprecated endpoints to this file if necessary.
    • Ensure any deprecated endpoints are marked as such in the HTTP API documentation section as well.

     

  • Ensure that any new CVEs identified are summarised in the documentation. CVEs are described in files under couchdb-documentation/src/cve/*.rst.

...

Code Block
$ cd couchdb && git checkout x.x.x-RC#
$ git tag -a x.x.x -m "Version x.x.x"
$ git push origin --tags

 

Now, re-build the release: The release tarball can now be renamed:

Code Block
$ git checkout cp apache-couchdb-x.x.x-RC##.tar.gz apache-couchdb-x.x.x-RC#.tar.gz
$ git reset --hard && git clean -ffdx
$ make dist
$ ls
#
# Replace HASHHASH below with the actual git hash as seen in the ls command.
$ rm cp apache-couchdb-x.x.x-RC##.tar.gz.asc apache-couchdb-x.x.x.tar.gz.asc
$ cp apache-couchdb-x.x.x-RC##.tar.gz.sha256 apache-couchdb-x.x.x-HASHHASH.tar.gz.sha256
$ mvcp apache-couchdb-x.x.x-HASHHASHRC##.tar.gz.sha512 apache-couchdb-x.x.x
$ tar cfz apache-couchdb-x.x.x.tar.gz apache-couchdb-x.x.x

 

...

.tar.gz.sha512


Push the files to the Apache distribution Subversion tree:

Code Block
languagebash
$ gpgsvn -bmkdir --armor apache-couchdb-parents \
    https://dist.apache.org/repos/dist/release/couchdb/source/x.x.x.tar.gz
$ md5sum apache-couchdb- \
    -m 'Add CouchDB x.x.x.tar.gz > apache-couchdb- dir'
$ svn co https://dist.apache.org/repos/dist/release/couchdb/source/x.x.x.tar.gz.md5
$ sha1sumcp apache-couchdb-x.x.x.tar.gz > apache-couchdb-* x.x.x.tar.gz.sha1/
$ sha256sumcd apache-couchdb-x.x.x.tar.gz > apache-couchdb-x.x.x.tar.gz.sha256
# If on Windows, fix the line endings in the checksum files!

 

Push the files to the Apache distribution Subversion tree:

...

languagebash

...

 && svn add . && svn ci -m 'Add CouchDB x.x.x release files'

 

Publishing the Convenience Binaries

Mac and Windows Binaries

The Mac and Windows binaries should be uploaded to the official  https://dist.apache.org/repos/dist/release/couchdb/

...

binary tree, using instructions similar to the above.

However, because it provides better visibility into our downloads (and is linked directly from our website), these should also be uploaded to Bintray. You will need a Bintray account to do this, and have access to https://bintray.com/apache/couchdb/ granted via INFRA before you can upload.

Debian/Ubuntu and RHEL/CentOS Binaries

  • First, build the binaries. On a Linux machine with Docker:

    Code Block
    languagebash
    $ git clone https://github.com/apache/couchdb-ci && cd couchdb-ci
    $ ./build.sh couch-pkg-all https://dist.apache.org/repos/dist/release/couchdb/source/x.x.x/apache-couchdb-x.x.x.tar.gz


  • Double-check that the contents of the pkgs directory include the expected results:
    • couch/centos-6/x86_64 should contain the couchdb RPM as well as the SpiderMonkey 1.8.5 RPMs.
    • couch/centos-7/x86_64 should contain the couchdb RPM.
    • debian-jessie debian-stretch ubuntu-trusty ubuntu-xenialubuntu-bionic should each contain the appropriate couchdb deb.
  • Now, upload the binaries to Bintray.
    • Visit the appropriate repo: https://bintray.com/apache/couchdb-deb/CouchDB or https://bintray.com/apache/couchdb-rpm/CouchDB  
    • Click on the New Version link. The version number should be x.x.x, and the description should be "Version x.x.x".
    • Click on the breadcrumb of the version number to return to the view of the version itself, such as https://bintray.com/apache/couchdb-rpm/CouchDB/2.1.0.
    • Click on the Upload Files link.
    • For RPMs, specify the appropriate target path: /el6/x86_64 or /el7/x86_64 as appropriate.
    • For debs, specify the appropriate parameters: distribution name (jessie, trusty, xenial), component name main, architecture name amd64. All platforms can be done in one go.
    • Click to add and upload the package. (Bintray automatically generates sha256 checksums.)
    • Wait for the upload to finish, then click Save Changes for RPM. For Debian, repeat the last 2 steps for all the packages, then click Save Changes.
    • In the banner that appears, click Publish.
  • Finally, sign the Debian repository. You will need your Bintray API Key for this, which you can find under your account settings.

    Code Block
    languagebash
    $ curl -X POST -u userid@apache:<API-KEY> https://api.bintray.com/gpg/apache/couchdb-deb/CouchDB/versions/X.X.X


Docker images

  • Update the contents of apache/couchdb-docker so that the new version is being built. This is usually just a global search and replace on the Dockerfile as well as a directory rename, plus updating .travis.yml.
  • Make a PR with the changes so Travis tests building the images as well, get that merged into master.
  • Use the new repo to build the image(s) the same way as in .travis.yml, tag the image(s), and upload to apache/couchdb:X.X.X using docker push. Note that the dev image cannot be uploaded per Apache policy!
  • Make a pull request against moby/official-images to reference the new commit.

 

Publishing the Convenience Binaries

Mac and Windows Binaries

The Mac and Windows binaries should be uploaded to the official  https://dist.apache.org/repos/dist/release/couchdb/binary tree,
using instructions similar to the above.

However, because it provides better visibility into our downloads (and is linked directly from our website), these should also be
uploaded to Bintray. You will need a Bintray account to do this, and have access to https://bintray.com/apache/couchdb/ granted

via INFRA before you can upload.

Debian/Ubuntu and RHEL/CentOS Binaries

    First, build the binaries. On a Linux machine with Docker:

    Code Block
    languagebash
    $ git clone https://github.com/apache/couchdb-pkg && cd couchdb-pkg
    $ ./make-releases.sh https://dist.apache.org/repos/dist/release/couchdb/source/x.x.x/apache-couchdb-x.x.x.tar.gz
  • Double-check that the contents of the pkgs directory include the expected results:
    • el6/x86_64 should contain the couchdb RPM as well as the SpiderMonkey 1.8.5 RPMs.
    • el7/x86_64 should contain the couchdb RPM.
    • jessie trusty xenial should each contain the appropriate couchdb deb.
  • Now, upload the binaries to Bintray.
    • Visit the appropriate repo: https://bintray.com/apache/couchdb-deb/CouchDB or https://bintray.com/apache/couchdb-rpm/CouchDB  
    • Click on the New Version link. The version number should be x.x.x, and the description should be "Version x.x.x".
    • Click on the breadcrumb of the version number to return to the view of the version itself, such as https://bintray.com/apache/couchdb-rpm/CouchDB/2.1.0.
    • Click on the Upload Files link.
    • For RPMs, specify the appropriate target path: /el6/x86_64 or /el7/x86_64 as appropriate.
    • For debs, specify the appropriate parameters: distribution name (jessie, trusty, xenial), component name main, architecture name amd64.
    • Click to add and upload the package and .md5 file. (Bintray automatically generates sha1/sha256 checksums.)
    • Wait for the upload to finish, then click Save Changes.
    • Repeat for each package. For Debian, all packages can be added at this point before clicking Save Changes.
    • In the banner that appears, click Publish.
  • Finally, sign the Debian repository. You will need your Bintray API Key for this, which you can find under your account settings.

    Code Block
    languagebash
    $ curl -X POST -u userid@apache:<API-KEY> https://api.bintray.com/gpg/apache/couchdb-deb/CouchDB/versions/X.X.X

Scheduling the Release Announcement

...