...
Update the
README.rst
file with important information.Update the
README-DEV.rst
file with important information.In the
couchdb-documentation
repository, update thesrc/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:
- use GH web UI to find the commit's related PRs or issues and write up
something nice - sort by GH issue/PR number
- 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 - 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 | ||
---|---|---|
| ||
$ 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:
...
language | bash |
---|
...
&& 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.
- Visit the appropriate repo: https://bintray.com/apache/couchdb/couchdb-win or https://bintray.com/apache/couchdb/couchdb-mac .
- 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/couchdb-win/2.1.0 .
- Click on the Upload Files link.
- Specify the appropriate target path:
/win/X.X.X
or/mac/X.X.X
as appropriate. - Click to add and upload the installer file. (Bintray automatically generates sha256 checksums.)
- Wait for the upload to finish, then click Save Changes.
- In the banner that appears, click Publish. You're done.
Debian/Ubuntu and RHEL/CentOS Binaries
First, build the binaries. On a Linux machine with Docker:
Code Block language bash $ 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-xenial
ubuntu-bionic
should each contain the appropriate couchdbdeb
.
- 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 language bash $ 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
usingdocker 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.
- Visit the appropriate repo: https://bintray.com/apache/couchdb/couchdb-win or https://bintray.com/apache/couchdb/couchdb-mac .
- 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/couchdb-win/2.1.0 .
- Click on the Upload Files link.
- Specify the appropriate target path:
/win/X.X.X
or/mac/X.X.X
as appropriate. - Click to add and upload the installer and .md5 file. (Bintray automatically generates sha1/sha256 checksums.)
- Wait for the upload to finish, then click Save Changes.
- In the banner that appears, click Publish. You're done.
Debian/Ubuntu and RHEL/CentOS Binaries
- 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 $ curl -X POST -u userid@apache:<API-KEY> https://api.bintray.com/gpg/apache/couchdb-deb/CouchDB/versions/X.X.Xlanguage bash
First, build the binaries. On a Linux machine with Docker:
Code Block | ||
---|---|---|
| ||
$ 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 |
Scheduling the Release Announcement
...