Every PPMC member should read the below docs at least once, several times, because eventually, after graduation, the NetBeans PMC members will be responsible to verify and ensure releases are done in compliance with these rules:
After reading the above, some specific steps and details and examples below.
-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.:
for ZIP in *.zip; do md5sum --check $ZIP.md5; sha1sum --check $ZIP.sha1; done
(should print things like "<zip>: OK")
-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.:
for ZIP in *.zip; do gpg --armor --output $ZIP.asc --detach-sig $ZIP; done
-verify the signatures:
gpg --verify $ZIP.asc $ZIP
E.g.:
for ZIP in *.zip; do gpg --verify $ZIP.asc $ZIP; done
-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
---svn add all the files, e.g.: "svn add incubating-netbeans-java/ incubating-netbeans-platform/"
---commit the files into the staging area:
svn --username "<your-apache-username>" commit
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.
-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)
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:
$ cd $RELEASE
$ mkdir -p repos/dist/release/incubator/netbeans
$ cd repos/dist/release/incubator/netbeans
$ svn checkout https://dist.apache.org/repos/dist/release/incubator/netbeans
Then move the candidate to the release area:
$ svn move $RELEASE/repos/dist/dev/incubator/netbeans/<candidate> .
And then commit the move:
$cd $RELEASE/repos/dist
$ svn commit -m "<commitmessage>" dev/incubator/netbeans/release/incubator/netbeans/