# Tracking for RELEASE 31 ## Week before freeze - [x] [[netbeans.git](https://github.com/apache/netbeans)] create/check milestone in github for version XX+1, should be NB XX+1 - [x] [dev ml] Announce the feature freeze date on dev@ using [NOTICE] emails [Feature freeze announce template](https://cwiki.apache.org/confluence/display/NETBEANS/Apache+NetBeans+Release+README#ApacheNetBeansReleaseREADME-Featurefreezedateannounce) - [x] [[plugin repository](https://plugins.netbeans.apache.org)] Login to https://plugins.netbeans.apache.org/ and create a new version XX [NetBeans versions](https://plugins.netbeans.apache.org/admin/nb-versions) ## Freeze preparations - [x] [[netbeans.git](https://github.com/apache/netbeans)] prepare RC issue template update PR https://github.com/apache/netbeans/labels/Release%20process [issue template](https://github.com/apache/netbeans/blob/master/.github/ISSUE_TEMPLATE/01-netbeans_bug_report.yml) (https://github.com/apache/netbeans/pull/9150/changes/e239f52ed64fa05def7b2c98389226e8f65c25b1) ## Freezing day and first release candidate - [x] [[netbeans.git](https://github.com/apache/netbeans)] change the current milestone on all remaining open pull request to the next milestone NB XX+1 (use bulk edit in the PR table) - [x] [[netbeans.git](https://github.com/apache/netbeans)] create/recreate delivery branch from master - [x] [[netbeans.git](https://github.com/apache/netbeans)] create release branch from master - [x] [dev ml] Announce feature freeze and branching on dev@ using [NOTICE] emails [Feature freeze and branching](https://cwiki.apache.org/confluence/display/NETBEANS/Apache+NetBeans+Release+README#ApacheNetBeansReleaseREADME-Featurefreezeandbranching) - [x] [[netbeans-antora.git](https://github.com/apache/netbeans-antora)] Add plugin center and update center redirects https://github.com/apache/netbeans-antora/blob/main/supplemental-ui/.htaccess. New release plugin center should point to existing release plugins (XX-1) until rc3 to allow for plugin authors to request verification. - [x] [jenkins,browser] check site if build in jenkins / also website - [x] [[netbeans.git](https://github.com/apache/netbeans)] (PR https://github.com/apache/netbeans/labels/Release%20process ) Increment module spec versions on master for the next release using `ant increment-spec-versions`. **Master branch reopen on merge**, reply to previous [NOTICE] mail to inform - [x] [[netbeans.git](https://github.com/apache/netbeans)] Create a tag on git XX-RC1 [action to create tag](https://cwiki.apache.org/confluence/display/NETBEANS/Apache+NetBeans+Release+README#ApacheNetBeansReleaseREADME-Createatagongitrepo) and generate prerelease notes from previous version - [x] [[netbeans-jenkins-lib.git](https://github.com/apache/netbeans-jenkins-lib)] Add the metadata about the release to [netbeansrelease.json](https://github.com/apache/netbeans-jenkins-lib/blob/master/meta/netbeansrelease.json), including a milestone for XX-rc1 using the hash from the release branch (eg. git show). This will be the last hash shared with any other branch. - [x] [jenkins] Trigger a build for the release branch in the [Jenkins NetBeansTLP job](https://ci-builds.apache.org/job/Netbeans/job/netbeans-TLP/). a buildname with releaseXX0 should be present. A build may have started automatically but will likely not have picked up the latest metadata - if so, stop and restart. Build with parameters – '**push to nightly**'. This is about 2h - [x] [RM computer] Download artefact or nightlies and check branding should be XX RC1 - [x] [RM computer]If branding is correct => lock build. (branding incorrect often means json file out of sync during build) respin. - [x] [dev ml] Announce RC1 on dev/user ML [RC Announce Template](https://cwiki.apache.org/confluence/display/NETBEANS/Apache+NetBeans+Release+README#ApacheNetBeansReleaseREADME-AnnounceRCXX) - [x] [mail] send mail to plugin dev - [x] [[netbeans.git](https://github.com/apache/netbeans)] Add pinned discussion to the releasecandidate - [x] [[netbeans.git](https://github.com/apache/netbeans)] merge prepared RC issue template PR - [x] [[netbeans.git](https://github.com/apache/netbeans)] (PR https://github.com/apache/netbeans/labels/Release%20process ) Create a snapshot [see workflow](https://cwiki.apache.org/confluence/display/NETBEANS/Apache+NetBeans+Release+README#ApacheNetBeansReleaseREADME-Preparesigtest) - [x] [browser] check apidoc on [bits.netbeans.org](https://bits.netbeans.org/) have release XX ## Additional release candidates (rc2, rc3, ...) _This section should be copy pasted for each additional weekly release candidate_ #### PR synchronisation on first modification of delivery - [x] [[netbeans.git](https://github.com/apache/netbeans)] (PR https://github.com/apache/netbeans/labels/Release%20process ) Sync delivery to releaseXXX for XX-rcN - [x] [[netbeans.git](https://github.com/apache/netbeans)] (PR https://github.com/apache/netbeans/labels/Release%20process ) Sync delivery to master after XX-rcN #### on the new RC build date - [x] [[netbeans.git](https://github.com/apache/netbeans)] merge the sync PR to releaseXXX. - [x] [[netbeans-jenkins-lib.git](https://github.com/apache/netbeans-jenkins-lib)] Add the metadata about the release to [netbeansrelease.json](https://github.com/apache/netbeans-jenkins-lib/blob/master/meta/netbeansrelease.json) - [x] [[netbeans.git](https://github.com/apache/netbeans)] Create a tag on git XX-RCn [action to create tag](https://cwiki.apache.org/confluence/display/NETBEANS/Apache+NetBeans+Release+README#ApacheNetBeansReleaseREADME-Createatagongitrepo) and generate prerelease notes from previous version - [x] [jenkins] Trigger a build for the release branch in the [Jenkins NetBeansTLP job](https://ci-builds.apache.org/job/Netbeans/job/netbeans-TLP/). a buildname with releaseXX0 should be present. A build may have started automatically but will likely not have picked up the latest metadata - if so, stop and restart. Build with parameters – '**push to nightly**'. This is about 2h - [x] [RM computer] Download artefact or nightlies and check branding should be XX rcN - [x] [RM computer] If branding is correct => lock build. (branding incorrect often means json file out of sync during build) respin. - [x] [[netbeans.git](https://github.com/apache/netbeans)] merge the sync PR to master. - [x] [dev/user ml] Announce rcN on dev/user ML [RC Announce Template](https://cwiki.apache.org/confluence/display/NETBEANS/Apache+NetBeans+Release+README#ApacheNetBeansReleaseREADME-AnnounceRCXX) ## In sync with rc3 or week 3 - [x] [[netbeans-antora.git](https://github.com/apache/netbeans-antora)] Update the plugin redirect for the coming release and dev to the new plugin center for version XX. ## Release preparation and vote _The release is always created from the same git hash as the last release candidate. Assuming no modifications on delivery, and at least 3 weeks from freeze (usually 3 RC), proceed to vote._ - [x] [[netbeans-jenkins-lib.git](https://github.com/apache/netbeans-jenkins-lib)] Add the metadata about the release to [netbeansrelease.json](https://github.com/apache/netbeans-jenkins-lib/blob/master/meta/netbeansrelease.json) - [x] [[netbeans.git](https://github.com/apache/netbeans)] Create a tag on git XX-RC1 [action to create tag](https://cwiki.apache.org/confluence/display/NETBEANS/Apache+NetBeans+Release+README#ApacheNetBeansReleaseREADME-Createatagongitrepo) and generate draft release notes from previous version - [x] [jenkins]Trigger a build for the release branch in the [Jenkins NetBeansTLP job](https://ci-builds.apache.org/job/Netbeans/job/netbeans-TLP/). a buildname with releaseXX0 should be present. A build may have started automatically but will likely not have picked up the latest metadata - if so, stop and restart. **Build with no parameter**. - [x] [RM computer] If branding is correct => lock build. (branding incorrect often means json file out of sync during build) respin. ### - [x] [RM computer] Download and extract the build artifacts. (everything in zip => archive.zip) - [x] [RM computer] Check sha512 on archive/dist/netbeans (should be source and zip) - [x] [dist svn] move file to svn "dev/netbeans/netbeans/XX" - [x] [RM computer] sign file export` GPG_EMAIL="YOU@apache.org";find . -name '*.zip' -exec gpg -u $GPG_EMAIL --armor --output {}.asc --detach-sign {} \;` - [x] commit for vote preparation - [x] [RM computer] on archive/mavenrepo do sign everything : `export GPG_EMAIL="YOU@apache.org";find . \( -name '*.nbm' -o -name '*.xml' -o -name '*.pom' -o -name '*.sha1' -o -name "*.md5" -o -name "*.jar" \) -exec gpg -u $GPG_EMAIL --armor --output {}.asc --detach-sig {} \;` - [x] [RM computer] upload to repository central (by default it will close the repository) `mvn org.sonatype.plugins:nexus-staging-maven-plugin:1.7.0:deploy-staged-repository -DserverId=apache.releases.https -DnexusUrl=https://repository.apache.org -DstagingProfileId=20604114d0070e -DrepositoryDirectory=<pathofsignedartefacts>` - [x] [dev ml] Send vote email to dev list [Vote mail template](https://cwiki.apache.org/confluence/display/NETBEANS/Apache+NetBeans+Release+README#ApacheNetBeansReleaseREADME-Mailforvote) - [x] [[netbeans-antora-site.git](https://github.com/apache/netbeans-antora-site)] prepare site download page PR - [x] [[netbeans-antora-site.git](https://github.com/apache/netbeans-antora-site)] prepare site blog entry page PR - [x] [[netbeans-antora-ui.git](https://github.com/apache/netbeans-antora-ui)] prepare banner PR - [x] [[netbeans.git](https://github.com/apache/netbeans)] Prepare issue template for next iteration ## Release _Assuming successful release vote. If vote fails, return to process for generating another release candidate._ - [x] [dev ml] Send mail to validate vote. - [x] [dist svn] Move staged release files (`svn mv`) from "dev/netbeans/netbeans/XX" to "release/netbeans/netbeans/XX" - [x] [apache maven repo] Release staged Maven artefacts - [x] [[netbeans.git](https://github.com/apache/netbeans)] Publish GitHub release notes - [x] [[netbeans.git](https://github.com/apache/netbeans)] close and unpin discussion for release XX - [x] [[netbeans.git](https://github.com/apache/netbeans)] close milestone and move remaining issue for release XX - [x] [[netbeans.git](https://github.com/apache/netbeans)] Merge issue template for next iteration - [x] [[netbeans-antora-site.git](https://github.com/apache/netbeans-antora-site)] Update website for release, merging new release page, blog post, and archiving of release XX-1 - [x] [[netbeans-antora-ui.git](https://github.com/apache/netbeans-antora-ui)] Merge website banner PR - [x] [announce ml] Announce release via email, including announce@netbeans.apache.org and announce@apache.org - [x] [[netbeans.git](https://github.com/apache/netbeans)] Merge SNAPSHOT PR, or rebuild one ## Post-release (1 week) - [x] [dist svn]Archive previous release by removing (`svn rm`) "release/netbeans/netbeans/XX-1" (archive.apache.org is automatically synced from dist.apache.org) - [x] [[netbeans-antora.git](https://github.com/apache/netbeans-antora)] Update website [previous.xml](https://github.com/apache/netbeans-antora/blob/main/supplemental-ui/updates/previous.xml) to notify of new release and update .htaccess to point NetBeans XX-1 update center to previous.xml (reference PR https://github.com/apache/netbeans-antora/pull/57) - [x] [[netbeans-jenkins-lib.git](https://github.com/apache/netbeans-jenkins-lib)] Update the metadata about the releasexxx (release date) and master release date (previous date) [netbeansrelease.json](https://github.com/apache/netbeans-jenkins-lib/blob/master/meta/netbeansrelease.json)