...
Producing a Release Candidate
1. Making sure you have the right permissions
- You must be a PPMC member / committer in Apache NetBeans
- You must have connected your Apache ID to Apache NetBeans GitHub via GitBox: https://gitbox.apache.org
- You must be able to change the branch being used for Hudson builds, i.e., see
Jira server ASF JIRA serverId 5aa69414-a9e9-3523-82ec-879b028fb15b key INFRA-17082
2. Obtaining the release candidate files
-decide version of the product, $VERSION (e.g. 9.0-rc1, 9.0-beta, 9.0, etc.)
-go to:
https://builds.apache.org/view/Incubator%20Projects/job/incubator-netbeans-release/
-press "Build with Parameters", fill $VERSION into the VERSION input line, press Build
-wait for the build to finish
-click on the build that was started above,
-download the build artifacts
-check the MD5 and SHA1 sums of each zip ($ZIP):
md5sum --check $ZIP.md5
sha1sum --check $ZIP.sha1
E.g.:
...
(should print things like "<zip>: OK")
...
3. Signing the release candidate
-create a GPG key, see:
https://www.apache.org/dev/release-signing.html
-for each zip file ($ZIP) do:
gpg --armor --output $ZIP.asc --detach-sig $ZIP
E.g.:
...
find . -name '*.asc' -exec gpg --verify '{}' ';'
...
4. Publishing them in the staging area
-in a directory (marked as $RELEASE in the following) do:
--setup (this can be reused in the future):
---mkdir -p dev/incubator/netbeans
---cd dev/incubator/netbeans
---svn checkout https://dist.apache.org/repos/dist/dev/incubator/netbeans .
--publishing to staging repository:
---create directories for the release, e.g. incubating-netbeans-platform/incubating-$VERSION, incubating-netbeans-java/incubating-$VERSION
---place the source zips, convenience binaries and the sha1, md5 asn asc files into the appropriate folder, e.g.:
incubating-netbeans-java/incubating-9.0-beta/incubating-netbeans-java-9.0-beta-bin.zip
incubating-netbeans-java/incubating-9.0-beta/incubating-netbeans-java-9.0-beta-bin.zip.asc
incubating-netbeans-java/incubating-9.0-beta/incubating-netbeans-java-9.0-beta-bin.zip.md5
incubating-netbeans-java/incubating-9.0-beta/incubating-netbeans-java-9.0-beta-bin.zip.sha1
incubating-netbeans-java/incubating-9.0-beta/incubating-netbeans-java-9.0-beta-source.zip
incubating-netbeans-java/incubating-9.0-beta/incubating-netbeans-java-9.0-beta-source.zip.asc
incubating-netbeans-java/incubating-9.0-beta/incubating-netbeans-java-9.0-beta-source.zip.md5
incubating-netbeans-java/incubating-9.0-beta/incubating-netbeans-java-9.0-beta-source.zip.sha1
incubating-netbeans-platform/incubating-9.0-beta/incubating-netbeans-platform-9.0-beta-bin.zip
incubating-netbeans-platform/incubating-9.0-beta/incubating-netbeans-platform-9.0-beta-bin.zip.asc
incubating-netbeans-platform/incubating-9.0-beta/incubating-netbeans-platform-9.0-beta-bin.zip.md5
incubating-netbeans-platform/incubating-9.0-beta/incubating-netbeans-platform-9.0-beta-bin.zip.sha1
incubating-netbeans-platform/incubating-9.0-beta/incubating-netbeans-platform-9.0-beta-source.zip
incubating-netbeans-platform/incubating-9.0-beta/incubating-netbeans-platform-9.0-beta-source.zip.asc
incubating-netbeans-platform/incubating-9.0-beta/incubating-netbeans-platform-9.0-beta-source.zip.md5
incubating-netbeans-platform/incubating-9.0-beta/incubating-netbeans-platform-9.0-beta-source.zip.sha1
...
commit message could be something like: "Apache NetBeans 9.0-beta RC1."
It may be possible to skip the --username "<your-apache-username>", but it shouldn't hurt. You'll be asked for a password.
...
5. Creating tag for the release candidate:
-let CANDIDATE be "rc1", "rc2", etc. depending on which candidate this is
-determine the git revision that was used to build the release - go to the Jenkins job, and look for a long hash after "Revision:". Will be referred to as $HASH.
-prepare a commit message - could be something like "$CANDIDATE of $VERSION release", or something more descriptive. ($COMMIT)
-do the tag:
git tag -a '$VERSION-$CANDIDATE' -m "$COMMIT" $HASH
-push the tag:
git push origin '$VERSION-$CANDIDATE'
(assuming the Apache repo is "origin" for you)
...
6. Releasing a Release Candidate
To actually release a candidate, move it to the release area. In addition to the staging area, the release area needs to be checked out:
...
$ svn commit -m "<commitmessage>" dev/incubator/netbeans/release/incubator/netbeans/
...
7. Updating redirect for NetBeans Distribution Update Center
Once release is synchronized across all download mirrors it is necessary to update redirect for release modules to final location:
...