VOL-4840 - Tracing ticket for release documentation.

release_notes/voltha_2.11.rst
-----------------------------
  o Version string updates for a few released components.

howto/release/index.rst
howto/release/components/index.rst
----------------------------------

howto/release/preparation.rst
howto/release/components/onos_dependencies.rst
----------------------------------------------
  o Begin documenting the variant release process for onos components.
  o ONOS publishes builds through maven central -vs- github and tags.

Misc text edits within documents to improve clarity.

Change-Id: Ib1179a1a9ea7c9c6e02f40644ab29fbbd7a83443
diff --git a/howto/release/components/index.rst b/howto/release/components/index.rst
index a63e5dc..f13b276 100644
--- a/howto/release/components/index.rst
+++ b/howto/release/components/index.rst
@@ -1,17 +1,71 @@
-VOLTHA Components (wip)
-=======================
+VOLTHA Components
+=================
+
+ONOS
+----
+A few different processes exist for releasing the VOLTHA project and componets.
+Some are released through github using branches/tags/downloads.
+Others are released as packages on maven central.
+
+A jenkins job exists for releasing ONOS app
+- Maven central based release
+- Release process requires some manual steps.
 
 - `Jenkins Release Job <https://jenkins.opencord.org/job/onos-app-release/>`_
 
-    - Initiate a build for the target component, specify appVersion & apiVersion.
-    - Job will modify pom.xml and create pull requests based on version strings.
-    - Approve and merge the pom.xml changes.
-    - Next a jenkins job will publish changes to maven central.
+  - Initiate a build with parameters for the target component.
 
-       - A user login is required.
-       - `Wait until artifacts are published <https://search.maven.org/search?q=g:org.opencord>`_
-       - Verify status then manually initiate.
-    - `Visit <https://oss.sonatype.org>`_
-       - Select app to release.
-       - Click Show all versions.
-       - TODO: Girish to provide remaining steps.
+    - Use repository name not name of the app itself.
+    - Specify appVersion and apiVersion stored in the pom.xml file.
+
+  - Job will modify pom.xml and create pull requests based on version strings.
+
+    - NOTE: Two pull requests are created to modify pom.xml
+      - One for release (x.y.z)
+      - The second to revert to non-release version (x.(y+1).z-SNAPSHOT)
+      - Approve and merge the release version while performing the release.
+      - Once published approve the 2nd version change to re-attach the -SNAPSHOT suffix.
+
+    - Version x.y.z-SNAPSHOT is the default non-release version.
+    - Jenkins job will morph x.y.z-SNAPSHOT into x.y.z for the release.
+    - A gerrit pull request will be created under the release requestor(s) name.
+
+  - Approve the pom.xml pull request and merge.
+  - Merge will trigger (https://jenkins.opencord.org/job/maven-publish_sadis/ for sadis app, similar link for olt and other apps) that publish the artifact in the staging repo on oss.sonatype.org, you need to release it.
+  - Wait for build to complete
+  - Merge the patches here https://gerrit.opencord.org/q/owner:do-not-reply%2540opennetworking.org
+
+- Publish sonatype staging to maven central:
+
+  - Visit `https://oss.sonatype.org <https://oss.sonatype.org>`_
+  - Login with ONF credentials
+
+    - Search for org.opencord
+    - Click on "Staging repositories" (in the left side navigation)
+    - In the top right search for last part of the app name (eg: olt)
+    - Click release (top left bar, small button)
+    - `Wait until artifacts are published <https://search.maven.org/search?q=g:org.opencord>`_
+
+- Release all other apps/components (dependency hierarch):
+
+  - Iterate over individual components in order of increasing dependency volume.
+
+    - For ex olt depends on sadis
+    - Begin by releasing sadis first
+    - Once publishing has completed then olt can be released.
+
+  - Verify expected dependent version has been released.
+  - Modify pom.xml, update dep version(s) from x.z.y-SNAPSHOT to x.y.z
+  - Commit and submit.
+
+
+See Also
+========
+.. toctree::
+
+   onos_dependencies
+
+   voltctl/index
+   voltctl/install
+   voltctl/release
+   voltctl/see_also
diff --git a/howto/release/components/onos_dependencies.rst b/howto/release/components/onos_dependencies.rst
new file mode 100644
index 0000000..2b005a6
--- /dev/null
+++ b/howto/release/components/onos_dependencies.rst
@@ -0,0 +1,103 @@
+VOLTHA Components: ONOS Dependencies
+====================================
+
+ONOS components are maintained by a series of maven projects.
+Releasing individual components will require:
+
+- Build and release dependencies:
+
+  - Three jenkins jobs
+
+    - modify version in pom.xml for release (remove -SNAPSHOT)
+    - publish artifact to maven central.
+    - modify version in pom.xml for release (append -SNAPSHOT)
+
+  - Three manual operations:
+
+    - Review and approve pull request to create a pom.xml release version.
+    - Release artifact to maven central.
+    - Review and approve pull request to create a pom.xml non-release version.
+
+  - Long idle window(s)
+
+First submit nop jobs to verify the packages can build and test cleanly.
+Bulk update copyright notice dates or modify comments within sources and submit.
+
+Search pom.xml for package version string
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+component sadis
+
+Package version strings should contain the suffix -SNAPSHOT.
+
+.. code:: bash
+
+   aaa/pom.xml
+   aaa/api/pom.xml
+   aaa/app/pom.xml
+
+.. code:: XML
+
+   <artifactId>sadis</artifactId>
+   <version>5.9.0-SNAPSHOT</version>
+   <packaging>pom</packaging>
+
+   <properties>
+      <sadis.api.version>5.9.0-SNAPSHOT</sadis.api.version>
+   </properties>
+
+
+Next search pom.xml for dependent packages
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+component: aaa
+
+Dependent package version strings will be a released (non-SNAPSHOT) version.
+
+.. code:: XML
+
+   <properties>
+      <sadis.api.version>5.9.0</sadis.api.version>
+      <aaa.api.version>2.8.0-SNAPSHOT</aaa.api.version>
+   </properties>
+
+
+Dependency Hierarchy
+--------------------
+
+Components are built and released in version hiearchy order.
+
+sadis
+^^^^^
+
+- Verify -SNAPSHOT version string is present.
+- Dependent components: none
+- Scan pom.xml for version dependencies:
+
+.. code:: XML
+
+   <sadis.api.version>5.9.0-SNAPSHOT</sadis.api.version>
+
+
+aaa
+^^^
+
+- Verify -SNAPSHOT version string is present.
+- Dependent components: sadis
+- Modify pom.xml, update released version strings
+
+.. code:: XML
+
+   <sadis.api.version>5.9.0</sadis.api.version>
+
+
+igmpproxy
+^^^^^^^^^
+
+- Verify -SNAPSHOT version string is present.
+- Dependent components: aaa, bng, dhcpl2relay igmp, mcast, olt, sadis
+- Modify pom.xml, update released version strings
+
+.. code:: XML
+
+   <sadis.api.version>5.9.0</sadis.api.version>