Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Remove some incubator references

Table of Contents

Release Process

Every PPMC PMC 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.
    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 PMC 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".

...

Before you start

1. Make sure you have the Right Permissions

  1. You must be a PPMC PMC 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 
    Jira
    serverASF JIRA
    serverId5aa69414-a9e9-3523-82ec-879b028fb15b
    keyINFRA-17082
  4. You shall have a PGP KEY
  5. You need to have sudo access to netbeans-vm.apache.org

Producing a Beta

1. Obtaining and Preparing the Beta files

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

    Code Block
    languagebash
    themeMidnight
    find . -name '*.sha512' -exec sha512sum --check '{}' \;


2. Distributing Beta via mailing lists

  1. Beta releases should be distributed directly from the Jenkins build job - eg.


Producing a Release Candidate

1. Obtaining and Preparing the Release Candidate Files

  1. Determine the version of the release,  e.g. 911.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 for the job to be finished.
  5. Download and extract the build artifacts.
  6. Check the SHA512 checksums:

    Code Block
    languagebash
    themeMidnight
    find . -name '*.sha512' -exec sha512sum --check '{}' \;


  7. Sign the Release Files

    Code Block
    languagebash
    themeMidnight
    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

    Code Block
    languagebash
    themeMidnight
    find . -name '*.asc' -exec gpg --verify {} \;

...


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

...

3. Publishing them in the staging area

Create an empty directory for the release then:

Code Block
languagebash
themeMidnight
svn checkout --depth immediates https://dist.apache.org/repos/dist/ apache-dist
cd apache-dist/dev && svn update --depth immediates incubatornetbeans
cd incubatornetbeans/netbeans && svn update --set-depth infinity

...

Code Block
languagebash
themeMidnight
svn rm incubating-netbeans-platform/* incubating-netbeans/*
mkdir incubating-netbeans-platform/incubating-$VERSION, incubating-netbeans/incubating-$VERSION
# Copy the incubator-netbeans-platform and incubator-netbeans artifacts with checksums and signatures in place
svn add incubating-netbeans-platform/* incubating-netbeans/*
svn --username "<your-apache-username>" commit -m "Apache NetBeans $VERSION."

...

4. Creating tag for the Release:

Go to your local git repository clone. Collect the git commit hash from the release build job.

Code Block
languagebash
themeMidnight
git fetch --all
git tag -a $VERSION -m "Apache NetBeans $VERSION." $HASH
git push origin $VERSION

...

5. Releasing a Release

...

While vote candidate $VERSION is something, like: 11.0-vc3vc1, the actual $RELEASE_VERSION is: 11.0

Code Block
languagebash
themeMidnight
# Go to the apache-dist directory which had been previously checked out in Step 4.
cd release && svn update --depth immediates incubatornetbeans
cd incubatornetbeans/netbeans && svn update --set-depth infinity
# svn rm incubating-netbeans-platform/* incubating-netbeans/* # need to keep LTS and latest non-LTS ?
# Use svn move or copy to copy the the artifact from the staging area
svn mv ../../../dev/incubator/netbeans/incubating-netbeans-platform/incubating-$VERSION incubating-netbeans-platform/incubating-$RELEASE_VERSION
svn mv ../../../dev/incubator/netbeans/incubating-netbeans/incubating-$VERSION incubating-netbeans/incubating-$RELEASE_VERSION
  1. Go to the release version directories and rename the release candidate artifacts to have the release version in their name.
  2. Adjust the name change in the checksum files (or recreate them)
  3. Doublecheck the checksums with: find . -name '*.sha512' -exec sha512sum -c {} \;
  4. Commit the changes from the apache-dist directory

...

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

    Code Block
    languagebash
    themeMidnight
    sudo /bin/bash
    cd /var/www/html/uc/
    mkdir 11.0
    cd 11.0/
    curl https://dist.apache.org/repos/dist/release/incubator/netbeans/incubating-netbeans/incubating-11.01/nbms/updates.xml.gz -o updates.xml.gz
    echo ' RedirectMatch ^/uc/11.0/(.*)(\?.*)?$ http://www.apache.org/dyn/closer.lua?action=download&filename=incubator/netbeans/incubating-netbeans/incubating-11.01/nbms/$1' > .htaccess
    # Update the previous version UC 
    cd ../10.0/
    echo 'RedirectMatch ^/uc/10.0/(.*)(\?.*)?$ https://archive.apache.org/dist/incubator/netbeans/incubating-netbeans/incubating-10.0/nbms/$1' > .htaccess
    vim updates.xml.gz


  3. Modify updates.xml.gz file of previous release to contain: (how to handle LTS vs non-LTS?)

    Code Block
    languagexml
    themeMidnight
    <notification url="https://netbeans.apache.org/download/index.html">Apache NetBeans IDE 11.0 is available!</notification>

      element in its <module_updates> root element.

...