...
- Add your code signing key to your Apache ID here
- Add it to the MADlib KEYS files in the dev and release subversion repositories:
- dev: https://dist.apache.org/repos/dist/dev/incubator/madlib/KEYS
- release: https://dist.apache.org/repos/dist/release/incubator/madlib/KEYS
Ensure JIRA Issues are Appropriately Tagged for the Release
...
- Build is successful (Refer to Build and Install for build instructions)
- DISCLAIMER is correct, filenames include “incubating”
- LICENSE and NOTICE files are correct and dependency licenses are acceptable
- LICENSE and NOTICE files at the root of the artifact directory must only reflect the contents of the artifact in which they are contained.
- See:
- LICENSE file requirements
- LICENSE requirements for distribution artifacts with multiple licenses
- NOTICE file requirements (Check Copyright year)
- Apache Legal
- Acceptable and Unacceptable Dependency Licenses
- All source files have license headers where appropriate, RAT checks pass
- Additional check:
- pom.xml
- Additional check:
- The provenance of all source files is clear (ASF or software grants)
- Create the Release Candidate
- Sign the Release Candidate
- Verify the Release Candidate signatures
- Commit artifacts to the dev Apache dist site for release candidates
...
Branch your release:
git checkout -b <your release name> <commit sha1>
push to origin:
git push origin <your release name>
Apply signed tag on release branch
Example:
git tag -u <GPG KEY ID> --sign <your release name>-rc# -m "Apache MADlib (Incubating) <your release name> RC#" <SHA of HEAD of branch>
- Make a tarball and gzip:
git archive -o ../apache-madlib-<your release name>-incubating-src.tar --prefix=apache-madlib-<your release name>-incubating-src/ <your tag/branch name>
gzip ../apache-madlib-<your release name>-incubating-src.tarExample:
$ git archive -o ../apache-madlib-1.11-incubating-src.tar --prefix=apache-madlib-1.11-incubating-src/ 1.11-incubating
$ gzip ../apache-madlib-1.11-incubating-src.tar
Create convenience binaries (rpm and dmg files)
...
cp greenplum-db-5.0.0-beta.6-rhel6-x86_64.rpm /opt/downloads
cp apache-madlib-1.11-incubating-src.tar.gz /opt/downloads
...
Example:
$ md5 apache-madlib-1.11-incubating-src.tar.gz > apache-madlib-1.11-incubating-src.tar.gz.md5
$ shasum -a 512 apache-madlib-1.11-incubating-src.tar.gz > apache-madlib-1.11-incubating-src.tar.gz.sha512
$ gpg --detach-sign -a apache-madlib-1.11-incubating-src.tar.gz
You need a passphrase to unlock the secret key for
user: "Rashmi Raghu (CODE SIGNING KEY) <rashmiraghu@apache.org>"
4096-bit RSA key, ID 28D2C789, created 2017-05-01
$ ls -la
-rw-r--r--@ 1 rraghu staff 9961787 May 1 13:55 apache-madlib-1.11-incubating-bin-Darwin.dmg
-rw-r--r-- 1 rraghu staff 819 May 1 14:29 apache-madlib-1.11-incubating-bin-Darwin.dmg.asc
-rw-r--r-- 1 rraghu staff 86 May 1 14:27 apache-madlib-1.11-incubating-bin-Darwin.dmg.md5
-rw-r--r-- 1 rraghu staff 175 May 1 14:28 apache-madlib-1.11-incubating-bin-Darwin.dmg.sha512
-rw-r--r--@ 1 rraghu staff 3868116 May 1 13:55 apache-madlib-1.11-incubating-bin-Linux-GPDB5alpha1.rpm
-rw-r--r-- 1 rraghu staff 819 May 1 14:48 apache-madlib-1.11-incubating-bin-Linux-GPDB5alpha1.rpm.asc
-rw-r--r-- 1 rraghu staff 97 May 1 14:46 apache-madlib-1.11-incubating-bin-Linux-GPDB5alpha1.rpm.md5
-rw-r--r-- 1 rraghu staff 186 May 1 14:47 apache-madlib-1.11-incubating-bin-Linux-GPDB5alpha1.rpm.sha512
-rw-r--r--@ 1 rraghu staff 18527053 May 1 13:55 apache-madlib-1.11-incubating-bin-Linux.rpm
-rw-r--r-- 1 rraghu staff 819 May 1 14:43 apache-madlib-1.11-incubating-bin-Linux.rpm.asc
-rw-r--r-- 1 rraghu staff 85 May 1 14:41 apache-madlib-1.11-incubating-bin-Linux.rpm.md5
-rw-r--r-- 1 rraghu staff 174 May 1 14:41 apache-madlib-1.11-incubating-bin-Linux.rpm.sha512
-rw-r--r--@ 1 rraghu staff 2474217 May 1 13:56 apache-madlib-1.11-incubating-src.tar.gz
-rw-r--r-- 1 rraghu staff 819 May 1 14:45 apache-madlib-1.11-incubating-src.tar.gz.asc
-rw-r--r-- 1 rraghu staff 82 May 1 14:44 apache-madlib-1.11-incubating-src.tar.gz.md5
-rw-r--r-- 1 rraghu staff 171 May 1 14:45 apache-madlib-1.11-incubating-src.tar.gz.sha512
Validate the Release Candidate
As per the Apache documentation, verify that the release candidate artifacts satisfy the following:
...
$ gpg --verify apache-madlib-1.11-incubating-bin-Linux.rpm.asc
gpg: assuming signed data in `apache-madlib-1.11-incubating-bin-Linux.rpm'
gpg: Signature made Mon May 1 14:42:16 2017 PDT using RSA key ID 28D2C789
gpg: Good signature from "Rashmi Raghu (CODE SIGNING KEY) <rashmiraghu@apache.org>"
$ gsha512sum --check apache-madlib-1.11-incubating-bin-Linux.rpm.sha512
apache-madlib-1.11-incubating-bin-Linux.rpm: OK
$ gmd5sum --check apache-madlib-1.11-incubating-bin-Linux.rpm.md5
apache-madlib-1.11-incubating-bin-Linux.rpm: OK
- Build is successful (Refer to Build and Install for build instructions)
Check Jenkins build here to make sure it does not show any errors: https://builds.apache.org/job/madlib-master-build/
- DISCLAIMER is correct, filenames include “incubating”
- LICENSE and NOTICE files are correct and dependency licenses are acceptable
- LICENSE and NOTICE files at the root of the artifact directory must only reflect the contents of the artifact in which they are contained.
- See:
- LICENSE file requirements
- LICENSE requirements for distribution artifacts with multiple licenses
- NOTICE file requirements (Check Copyright year)
- Apache Legal
- Acceptable and Unacceptable Dependency Licenses
...
The Apache dist dev site for MADlib (incubating) is located at: https://dist.apache.org/repos/dist/dev/incubator/madlib/
Uploading to this site is via Subversion.
- Retrieve the subversion dev incubator madlib dev madlib repo
Example:svn checkout https://dist.apache.org/repos/dist/dev/incubator/madlib/ --username=<your apache user id>
- Create a local folder for the release (e.g. 1.11-incubating.RC1) in svn. We use apache's distribution repo: https://dist.apache.org/repos/dist/dev/incubator/madlib/
- Move the files into the release folder on local disk
svn add <release folder>
- Commit artifacts:
Example:svn commit -m 'adding 1.11 -incubating RC1 candidate release artifacts' --username=<your apache user id>
...
Move the source, binaries and corresponding signature files from staging (dev) folder to the release dist site: https://dist.apache.org/repos/dist/release/incubator/madlib/ . Use the
svn mv
command. Example below:svn mv https://dist.apache.org/repos/dist/dev/incubator/madlib/1.11-incubating-rc3/ https://dist.apache.org/repos/dist/release/incubator/madlib/1.11-incubating/
Remove old releases from the release and dev dist sites
Retrieve the subversion release incubator madlib repo if you have not done so already
Example:svn checkout https://dist.apache.org/repos/dist/release/incubatordev/madlib/ --username=<your apache user id>
- Delete the folders from local working copy using
svn delete <folder to delete>
.
E.g.svn delete 1.10.011-incubatingrc3/
- Commit the deletions:
svn commit -m 'removing old releaseRemoving 1.11 RC releases' --username=<your apache user id>
Remember to do the above steps for the "dev" site as well
- Update the user docs link to point to the correct version of the docs and also update any version numbers / links in the page content: http://madlib.incubator.apache.org/docs/latest/
- Announce the release on user@ and dev@ mailing lists. See example email of past announcement.
...
- Some of the content of this page came from the Apache HAWQ (incubating) projectHAWQ project, which is another good guide for release process: https://cwiki.apache.org/confluence/display/HAWQ/Release+Process%3A+Step+by+step+guide
...