Notes on building/releasing Commons Parent
==========================================

These recipes should work.
Other recipes may suit other tastes!
This is the short form of "Releasing Commons Components"
https://commons.apache.org/releases/index.html

To perform the license release audit, a.k.a. "RAT check", run.

mvn apache-rat:check

Building for local repo:
-----------------------

mvn -N install

Snapshot deployment:
-------------------

mvn deploy

Preparing for release candidate:
-------------------------------
- Check for updates to plugins and dependencies.
- Ensure NOTICE has correct year.
- Ensure changes.xml is up to date (Release notes are updated during tagging)
- Ensure pom.xml header comment agrees with changes for this release
- Regenerate files:
  mvn commons-build:all -Dproject.inceptionYear=2006
  (N.B. the year is not defined in the pom to avoid propagation to components)
- Check and commit all changes

Creating release candidate tag:
------------------------------
N.B. This is done in a separate release branch so that the default branch remains a SNAPSHOT version

- Checkout default branch in clean workspace:
  git clone https://gitbox.apache.org/repos/asf/commons-parent.git commons-parent-<NN>-RC1
- cd commons-parent-<NN>-RC1
- Update the release branch:
  git checkout release
  git pull origin release
  git pull origin master
- Edit version in pom.xml to remove SNAPSHOT suffix
  mvn versions:set -DnewVersion=NN -DgenerateBackupPoms=false
- Update the release notes. These are cumulative, so the new notes must be generated in a temporary file
  Generate a temporary file, for example:
  mvn changes:announcement-generate -Prelease-notes -Dchanges.version=NN -Dchanges.announcementFile=NN.tmp
  Edit the file to tidy it up, and prepend it to RELEASE-NOTES.txt
  Remove the temporary file
- Create tag the from the updated workspace:
  git commit -am "Update version numbers for Commons Parent version NN"

  git tag -s commons-parent-NN-RC1 -m "Tag Commons Parent version NN-RC1" [-u keyid] # signed tag
  OR
  git tag -a commons-parent-NN-RC1 -m "Tag Commons Parent version NN-RC1"

  git push --tags origin release

Test build of tag:
-----------------
- mvn deploy -Duser.name=ASF-login-name -Prelease -Ptest-deploy
- Check the contents of target/deploy/org/apache/commons/commons-parent/<NN>
  - should contain commons-parent-<NN>.pom, commons-parent-<NN>-site.xml and sigs/hashes
  - also -src.tar.gz, -src.zip and sigs/hashes

Deploy RC to Nexus:
------------------
- Set up passwords in settings.xml (https://wiki.apache.org/commons/UsingNexus)
- Same command as above, but omitting -Ptest-deploy profile:
- mvn package deploy -Dassembly.attach=false -Duser.name=ASF-login-name -Prelease

Tidy and close Nexus staging area:
---------------------------------
- Login to Nexus: https://repository.apache.org/index.html
- Open "Staging Repositories", find the correct "Open" entry (check Summary tab in bottom panel)
- The message "No CLM data recorded" appears to be benign
- Open the bottom "Content" tab and navigate to the files
- Delete *.asc.md5 and *.asc.sha1 if present
- Checkout https://dist.apache.org/repos/dist/dev/commons/commons-parent
- Download the -src archives, their sigs and hashes, then delete them from Nexus.
- Commit the dist/dev/ folder

Close the staging area - Description: "Apache Commons Parent <NN> RC1"
Screen does not auto-refresh - you need to press refresh

Send round the release vote(lazy)
--------------------------------

Promote the Nexus staging area
------------------------------
Assuming the vote passes, login to Nexus and use the "Release" function
[If there was a problem identified, Drop the repo instead and start again]

Copy the RC Tag to final tag:
   TBA

Publish the source files to 
https://dist.apache.org/repos/dist/release/commons/commons-parent

Update site documentation
-------------------------
Please check that the site documentation is up to date 
See:
https://svn.apache.org/repos/asf/commons/cms-site/trunk/content/xdoc/commons-parent-pom.xml
This will need updating if any new features / profiles etc are added.
It does not list plugin or dependency versions.
However at the least please update the version details and URL at the start of the page.


Prepare next Release Cycle
--------------------------
Modify pom.xml with next SNAPSHOT version, remove second last history comment
Add next release tag in src/changes/changes.xml and commit changes to trunk
