You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 42 Next »

Release Process

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:

  1. See the generic Apache Release process – http://www.apache.org/dev/release-publishing.html.

  2. See the generic Apache Release FAQ – http://www.apache.org/legal/release-policy.html.

  3. See the ASF policy and documentation for releases: http://www.apache.org/dev/#releases.

  4. See the necessary steps and requirements for the release distribution -- http://www.apache.org/dev/release-distribution.html.

  5. And the specific amendments for Incubator releases -- http://incubator.apache.org/guides/releasemanagement.html.

Specific Steps, Details, and Examples

After reading the above, some specific steps and details and examples below.

  1.  PPMC vote and tally.

  2. During incubation, IPMC vote, for example: 

    https://lists.apache.org/thread.html/ae06af5a10d99a14e35a0fee8a8e35e91505b85293549f8152a075d4@%3Cgeneral.incubator.apache.org%3E

    Conclude and tally the vote on general@ by replying with a final [RESULT][VOTE] <subject>, which can be done after minimal 72h. Check the general@ list for examples on the format and content of such [RESULT][VOTE] emails, for example:

    https://lists.apache.org/thread.html/30c40866c0ad97d747c270dc7b7ddc78f60157695763bf355e1697a4@%3Cgeneral.incubator.apache.org%3E


  3. The source distribution at https://dist.apache.org/repos/dist/dev/incubator/netbeans/

    needs to be moved (can use svn mv for that) to something like:

    https://dist.apache.org/repos/dist/release/incubator/netbeans/incubating-netbeans-html4j/

  4. Also, the KEYS file needed to verify netbeans distributions needs to be uploaded in the root (netbeans) dist folder there as well:

    http://www.apache.org/dev/release-distribution.html#sigs-and-sums

  5. Finally, the NetBeans website (netbeans.apache.org) needs to provide a download link for the distribution, including (explicitly) links to:

    http://www.apache.org/dev/release-distribution.html#download-links

    Example: http://impala.incubator.apache.org/downloads.html

    i
    .e., u
    pdate the website with the release info, as that is required to make it a proper and community-visible release.

Note: If the main site is not syncing go to selfserve.apache.org and click "synchronize git repositories".

Producing a Release Candidate

1. Make sure you have the Right Permissions

  1. You must be a PPMC member / Committer in Apache NetBeans
  2. You must have connected your Apache ID to Apache NetBeans GitHub via GitBox: https://gitbox.apache.org
  3. You must be able to change the branch being used for Jenkins builds,
    i.e., see  Unable to render Jira issues macro, execution error.
  4. You shall have a PGP KEY

2. Obtaining and Preparing the Release Candidate Files

  1. Determine the version of the release,  e.g. 9.0-vc1, for voting candidate 1, later it's going to be referred as $VERSION
  2. Go to the incubator-netbeans-release job on Apache's Jenkins
  3. Build with Parameters, fill $VERSION into the VERSION input line and Build
  4. Wait the job to be finished.
  5. Download and extract the build artifacts.
  6. Check the SHA512 checksums:

    find . -name '*.sha512' -exec sha512sum --check '{}' \;
  7. Sign the Release Files

    find . -name '*.zip' -exec gpg --armor --output {}.asc --detach-sig {} \;
    # STop here if nbms are not going to be published
    find . -name '*.nbm' -exec gpg --armor --output {}.asc --detach-sig {} \;
    find . -name '*.gz' -exec gpg --armor --output {}.asc --detach-sig {} \;
  8. Verify Signatures

    find . -name '*.asc' -exec gpg --verify {} \;

3. Verifying the Release by Checklist

  1. Go through the Apache Incubator Release Checklist
    (whether a project is in the Apache Incubator or not, these items need to be checked since they're important for all Apache releases)
  2. Check the Product version:
    Start Apache NetBeans and check the Title and the Help > About Dialog
  3. Check that the splash screen has been updated.
  4. Check that the keyboard shortcut card has been updated.
  5. Check that the user directory matches the release number.
  6. Check GPL License is present and need to be accepted:
    1. Start NetBeans with an empty User directory
    2. Open a Java SE project: installing nb-javac shall present GPL
    3. Start NetBeans with an empty User directory
    4. Create a new PHP project: installing Graal JS shall present GPL

4. Publishing them in the staging area

Create an empty directory for the release then:

svn checkout --depth immediates https://dist.apache.org/repos/dist/
cd dist/dev && svn update --depth immediates incubator
cd incubator/netbeans && svn update --set-depth infinity



--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.

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:

$ 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> .

Example: 

svn mv ../../../dev/incubator/netbeans/incubating-netbeans-platform/incubating-9.0-vc3/ incubating-netbeans-platform/incubating-9.0

Remove the deprecated .md5 files:

$ find . -name '*.md5' -delete

And then commit the move:

$cd $RELEASE/repos/dist

$ 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:

  1.  Login to NetBeans virtual machine where redirect is configured: ssh <your_apache_id>@netbeans-vm.apache.org
  2.  Become root using e.g. OTP MD5 online encryption: sudo /bin/bash
  3.  Go to uc directory: cd /var/www/html/uc/
  4.  Create new version: mkdir 9.0
  5.  Go to the new directory: cd 9.0
  6.  Download the new gzipped module catalog: wget https://dist.apache.org/repos/dist/release/incubator/netbeans/incubating-netbeans-java/incubating-9.0/nbms/updates.xml.gz
  7.  Create new .htaccess file: touch .htaccess
  8.  Edit the .htaccess file in vi editor and add correct redirect rule: RedirectMatch ^/uc/9.0/(.*)(\?.*)?$ http://www.apache.org/dyn/closer.lua?action=download&filename=incubator/netbeans/incubating-netbeans-java/incubating-9.0/nbms/$1
  • No labels